XmMoveXxGeneral

INT64 __fastcall XmMoveXxGeneral(INT64 a1, INT64 a2, VOID *a3){
  int v3; 
  INT64 result; 
  int v6; 
  int v7; 
  int v8; 
  __int64 v9; 
  INT64 v10; 
  v3 = *(_DWORD *)(a1 + 112) & 1;
  LODWORD(v10) = 0;
  *(_DWORD *)(a1 + 120) = v3;
  result = XmEvaluateAddressSpecifier(a1, &v10, a3);
  if( result )
  {
    XmSetSourceValue(a1, (UINT16 *)result);
    v6 = *(_DWORD *)(a1 + 112) & 8;
    if( *(_DWORD *)(a1 + 120) )
    {
      if( v6 )
        v7 = *(__int16 *)(a1 + 108);
      else
        v7 = *(unsigned __int16 *)(a1 + 108);
    }
    else if( v6 )
    {
      v7 = *(char *)(a1 + 108);
    }
    else
    {
      v7 = *(unsigned __int8 *)(a1 + 108);
    }
    *(_DWORD *)(a1 + 108) = v7;
    if( *(_BYTE *)(a1 + 138) )
    {
      v8 = 3;
    }
    else
    {
      *(_WORD *)(a1 + 110) = 0;
      v8 = 1;
    }
    v9 = (unsigned int)v10 + 6i64;
    *(_DWORD *)(a1 + 120) = v8;
    result = 1i64;
    *(_QWORD *)(a1 + 88) = a1 + 4 * v9;
  }
  return result;
}

Referenced by:

No references.