public LSL_Integer llBase64ToInteger(string str)
{
int number = 0;
int digit;
if (!ScriptProtection.CheckThreatLevel(ThreatLevel.None, "LSL", m_host, "LSL", m_itemID)) return 0;
// Require a well-fromed base64 string
if (str.Length > 8)
return 0;
// The loop is unrolled in the interests
// of performance and simple necessity.
//
// MUST find 6 digits to be well formed
// -1 == invalid
// 0 == padding
if ((digit = c2itable[str[0]]) <= 0)
{
return digit < 0 ? 0 : number;
}
number += --digit << 26;
if ((digit = c2itable[str[1]]) <= 0)
{
return digit < 0 ? 0 : number;
}
number += --digit << 20;
if ((digit = c2itable[str[2]]) <= 0)
{
return digit < 0 ? 0 : number;
}
number += --digit << 14;
if ((digit = c2itable[str[3]]) <= 0)
{
return digit < 0 ? 0 : number;
}
number += --digit << 8;
if ((digit = c2itable[str[4]]) <= 0)
{
return digit < 0 ? 0 : number;
}
number += --digit << 2;
if ((digit = c2itable[str[5]]) <= 0)
{
return digit < 0 ? 0 : number;
}
number += --digit >> 4;
// ignore trailing padding
return number;
}