KiTpFetchImmediateOperand
INT64 __fastcall KiTpFetchImmediateOperand(INT64 a1, INT64 a2, _DWORD *a3){
unsigned int v3;
unsigned int v5;
INT64 result;
char v7;
__int64 v8;
__int64 a2a;
v3 = *(unsigned __int8 *)(a1 + 23);
a2a = 0i64;
v5 = v3 >> 3;
if( a2 )
{
*a3 += v5;
return 0i64;
}
else
{
result = KiTpFetchInstructionBytes(a1, &a2a, v5, a3);
if( (int)result >= 0 )
{
v7 = *(_BYTE *)(a1 + 23);
switch( v7 )
{
case 8:
v8 = (char)a2a;
break;
case 16:
v8 = (__int16)a2a;
break;
case 32:
v8 = (int)a2a;
break;
default:
v8 = a2a;
break;
}
*(_QWORD *)(a1 + 32) = v8;
}
}
return result;
}Referenced by:
KiTpEmulateGroup11Instruction
KiTpEmulateGroup1Instruction
KiTpEmulateMovRegImm