KiTpParseInstructionPrefix
INT64 __fastcall KiTpParseInstructionPrefix(CHAR *a1){
INT64 result;
int *v3;
CHAR v4;
CHAR v5;
bool v6;
CHAR v7;
unsigned __int8 a2;
int v9;
int a4;
a4 = 0;
a2 = 0;
v9 = 0;
while( 1 )
{
result = KiTpFetchInstructionBytes((INT64)a1, &a2, 1i64, &a4);
if( (int)result < 0 )
return result;
if( a2 > 0x65u )
{
if( a2 == 102 )
{
v3 = (int *)((char *)&v9 + 2);
}
else if( a2 == 103 )
{
v3 = (int *)((char *)&v9 + 3);
}
else
{
if( a2 != 240 && (unsigned int)a2 - 242 > 1 )
{
LABEL_19:
if( (_WORD)v9 )
return 3221225659i64;
v4 = 64;
v5 = a4;
if( (a2 & 0xF0) == 64 )
a1[25] = a2;
else
v5 = a4 - 1;
v6 = (a1[25] & 8) == 0;
a1[21] = v5;
a1[4] = 0;
if( v6 )
{
v7 = 32;
if( BYTE2(v9) == 102 )
v7 = 16;
a1[1] = v7;
}
else
{
a1[1] = 64;
}
if( HIBYTE(v9) == 103 )
v4 = 32;
result = 0i64;
*a1 = v4;
return result;
}
v3 = &v9;
}
}
else
{
if( a2 < 0x64u && a2 != 38 && a2 != 46 && a2 != 54 && a2 != 62 )
goto LABEL_19;
v3 = (int *)((char *)&v9 + 1);
}
if( *(_BYTE *)v3 )
return 3221225473i64;
*(_BYTE *)v3 = a2;
}
}Referenced by:
KiTpParseInstruction