XmMoveXxGeneral

NTSTATUS __stdcall XmMoveXxGeneral(INT64 a1, INT64 a2, VOID *a3){
  int v3; 
  UINT16 *v5; 
  int v6; 
  int v7; 
  int v8; 
  __int64 v9; 
  INT64 v11; 

  v3 = *(_DWORD *)(a1 + 112) & 1;
  LODWORD(v11) = 0;
  *(_DWORD *)(a1 + 120) = v3;
  LODWORD(v5) = XmEvaluateAddressSpecifier(a1, &v11, a3);
  if( v5 )
  {
    XmSetSourceValue(a1, v5);
    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)v11 + 6i64;
    *(_DWORD *)(a1 + 120) = v8;
    LODWORD(v5) = 1;
    *(_QWORD *)(a1 + 88) = a1 + 4 * v9;
  }
  return(int)v5;
}

Referenced by:

No references.