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