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