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