KiTpEmulateMovzx
INT64 __fastcall KiTpEmulateMovzx(UINT8 *a1, INT64 a2, UINT8 a3, INT64 *a4){
INT64 result;
_WORD *RegisterAddressByIndex;
UINT8 v9;
CHAR v10;
char v11[7];
__int64 v12;
UINT64 v13[2];
v13[0] = 0i64;
v11[0] = 0;
v10 = 0;
result = KiTpDecodeModRm(a1, a2, a4);
if( (int)result >= 0 )
{
if( a2 )
{
KiTpDecodeModRmOperand((INT64)a1, a2, (UINT64)v13, (CHAR)v11, (CHAR)&v10);
v12 = 0i64;
KiTpAccessMemory();
if( (int)result < 0 )
return result;
RegisterAddressByIndex = (_WORD *)KiTpGetRegisterAddressByIndex(
(INT64)a1,
a2,
(a1[26] >> 3) & 7,
(a1[25] & 4) != 0,
0);
v9 = a1[2];
if( v9 == 16 )
{
*RegisterAddressByIndex = v12;
}
else if( v9 == 32 )
{
*(_QWORD *)RegisterAddressByIndex = (unsigned int)v12;
}
else
{
*(_QWORD *)RegisterAddressByIndex = v12;
}
}
else
{
a1[2] = a1[1];
a1[1] = a3;
}
return 0i64;
}
return result;
}Referenced by:
KiTpEmulateInstruction