XmAddOperands

INT64 __fastcall XmAddOperands(INT64 a1, INT64 a2){
  int v2; 
  char v3; 
  char v5; 
  INT64 v6; 
  unsigned int v7; 
  int v8; 
  unsigned int v9; 
  INT64 result; 
  unsigned int v11; 
  v2 = *(_DWORD *)(a1 + 120);
  v11 = 0;
  v3 = a2;
  if( !v2 )
  {
    v5 = 7;
    LOBYTE(v11) = *(_BYTE *)(a1 + 104) + *(_BYTE *)(a1 + 108) + a2;
    goto LABEL_4;
  }
  if( v2 != 3 )
  {
    v5 = 15;
    LOWORD(v11) = *(_WORD *)(a1 + 104) + *(_WORD *)(a1 + 108) + a2;
LABEL_4:
    v6 = v11;
    goto LABEL_5;
  }
  v5 = 31;
  v6 = (unsigned int)(a2 + *(_DWORD *)(a1 + 108) + *(_DWORD *)(a1 + 104));
LABEL_5:
  XmStoreResult(a1, v6);
  v9 = *(_DWORD *)(a1 + 16);
  if( *(_DWORD *)(a1 + 124) != 30 )
    v9 = v8 | v9 & 0xFFFFFFFE;
  result = -v7;
  *(_DWORD *)(a1 + 16) = (v7 == 0 ? 0x40 : 0) | v9 & 0xFFFFF72B | (v3
                                                                 + (*(_BYTE *)(a1 + 104) & 0xF)
                                                                 + (*(_DWORD *)(a1 + 108) & 0xF)) & 0x10 | (4 * (((*((_BYTE *)XmBitCount + (v7 & 0xF)) + *((_BYTE *)XmBitCount + ((unsigned __int8)v7 >> 4))) & 1) == 0)) & 0x3F | (((v7 >> v5) & 1 | (16 * (((unsigned __int8)v8 ^ (unsigned __int8)((v7 ^ *(_DWORD *)(a1 + 104) ^ *(_DWORD *)(a1 + 108)) >> v5)) & 1))) << 7);
  return result;
}

Referenced by:

XmAdcOp
XmAddOp
XmIncOp
XmXaddOp