RtlIntegerToChar
INT64 __fastcall RtlIntegerToChar(UINT64 Value, UINT64 Base, INT64 OutputLength, CHAR *String){
int v5;
unsigned int v6;
unsigned int v7;
int v8;
int v9;
UINT8 *v10;
unsigned int v11;
__int64 v12;
__int64 *v13;
int v14;
__int64 v15;
bool v16;
__int64 v18;
char v19;
v5 = OutputLength;
v6 = Base;
v7 = Value;
switch( (_DWORD)Base )
{
case 0:
v6 = 10;
goto LABEL_3;
case 0xA:
LABEL_3:
v8 = 0;
v9 = 0;
goto LABEL_4;
case 0x10:
v8 = 4;
break;
case 2:
v8 = 1;
break;
case 8:
v8 = 3;
break;
default:
return 3221225485i64;
}
v9 = (1 << v8) - 1;
LABEL_4:
v10 = (UINT8 *)&v19;
do
{
if( v8 )
{
v11 = v7 & v9;
v7 >>= v8;
}
else
{
v11 = v7 % v6;
v7 /= v6;
}
--v10;
v12 = v11;
v13 = RtlpIntegerChars;
*v10 = *((_BYTE *)RtlpIntegerChars + v12);
}
while( v7 );
v15 = (unsigned int)(v14 + 65 - (_DWORD)v10);
if( v5 >= 0 )
goto LABEL_9;
v5 = -v5;
v16 = (int)v15 <= v5;
if( (int)v15 < v5 )
{
v18 = (unsigned int)(v5 - v15);
LOBYTE(v13) = 48;
memset((INT64)String, (INT64)v13);
v5 = v15;
String += v18;
LABEL_9:
v16 = (int)v15 <= v5;
}
if( !v16 )
return 2147483653i64;
memmove((UINT8 *)String, v10, (unsigned int)v15);
if( (int)v15 < v5 )
String[v15] = 0;
return 0i64;
}Referenced by:
CmLogMcUpdateStatus
CmpInitializeRegistryNode
RtlIntegerToUnicodeString