XmEvaluateIndexSpecifier

__int64 __fastcall XmEvaluateIndexSpecifier(INT64 a1, INT64 a2, VOID *a3){
  int v3; 
  unsigned __int8 CodeByte; 
  int v6; 
  __int64 v7; 
  INT64 v8; 
  int v9; 
  int v10; 
  int v11; 
  int v12; 
  NTSTATUS v13; 
  int v14; 
  INT64 v15; 
  INT64 v16; 
  INT64 v17; 
  NTSTATUS LongImmediate; 
  NTSTATUS v19; 
  NTSTATUS v20; 
  NTSTATUS v21; 
  NTSTATUS v22; 
  INT64 v23; 
  INT64 v24; 
  INT64 v25; 
  int v26; 
  NTSTATUS v27; 
  NTSTATUS v28; 
  NTSTATUS v29; 
  int v30; 
  int v31; 
  int v32; 
  int v33; 

  v3 = a2;
  CodeByte = XmGetCodeByte(a1, a2, a3);
  v6 = CodeByte >> 6;
  v7 = (CodeByte >> 3) & 7;
  v8 = (8 * v3) | CodeByte & 7u;
  if( (unsigned int)v8 > 0xC )
  {
    if( (unsigned int)v8 > 0x12 )
    {
      v30 = v8 - 19;
      if( !v30 )
      {
        LongImmediate = XmGetLongImmediate(a1);
        goto LABEL_62;
      }
      v31 = v30 - 1;
      if( !v31 )
      {
        v22 = XmGetLongImmediate(a1);
        goto LABEL_34;
      }
      v32 = v31 - 1;
      if( v32 )
      {
        v33 = v32 - 1;
        if( v33 )
        {
          if( v33 != 1 )
            goto LABEL_56;
          v27 = XmGetLongImmediate(a1);
          goto LABEL_45;
        }
        v28 = XmGetLongImmediate(a1);
LABEL_47:
        v13 = *(_DWORD *)(a1 + 48) + v28;
        return(unsigned int)(v13 + (*(_DWORD *)(a1 + 4 * v7 + 24) << v6));
      }
      v29 = XmGetLongImmediate(a1);
    }
    else
    {
      if( (_DWORD)v8 == 18 )
      {
        v19 = XmGetLongImmediate(a1);
        goto LABEL_27;
      }
      v23 = (unsigned int)(v8 - 13);
      if( (_DWORD)v23 )
      {
        v24 = (unsigned int)(v23 - 1);
        if( (_DWORD)v24 )
        {
          v25 = (unsigned int)(v24 - 1);
          if( (_DWORD)v25 )
          {
            v26 = v25 - 1;
            if( v26 )
            {
              if( v26 != 1 )
                goto LABEL_56;
              v20 = XmGetLongImmediate(a1);
              goto LABEL_29;
            }
            v21 = XmGetLongImmediate(a1);
LABEL_31:
            v13 = *(_DWORD *)(a1 + 24) + v21;
            return(unsigned int)(v13 + (*(_DWORD *)(a1 + 4 * v7 + 24) << v6));
          }
          v27 = XmGetCodeByte(a1, v25, (VOID *)7);
LABEL_45:
          v13 = *(_DWORD *)(a1 + 52) + v27;
          return(unsigned int)(v13 + (*(_DWORD *)(a1 + 4 * v7 + 24) << v6));
        }
        v28 = XmGetCodeByte(a1, v24, (VOID *)7);
        goto LABEL_47;
      }
      v29 = XmGetCodeByte(a1, v23, (VOID *)7);
    }
    v13 = *(_DWORD *)(a1 + 44) + v29;
    goto LABEL_13;
  }
  if( (_DWORD)v8 == 12 )
  {
    v22 = XmGetCodeByte(a1, v8, (VOID *)7);
LABEL_34:
    v13 = *(_DWORD *)(a1 + 40) + v22;
    goto LABEL_13;
  }
  if( (unsigned int)v8 > 6 )
  {
    v14 = v8 - 7;
    if( !v14 )
    {
      v13 = *(_DWORD *)(a1 + 52);
      return(unsigned int)(v13 + (*(_DWORD *)(a1 + 4 * v7 + 24) << v6));
    }
    v15 = (unsigned int)(v14 - 1);
    if( (_DWORD)v15 )
    {
      v16 = (unsigned int)(v15 - 1);
      if( (_DWORD)v16 )
      {
        v17 = (unsigned int)(v16 - 1);
        if( (_DWORD)v17 )
        {
          if( (_DWORD)v17 != 1 )
            goto LABEL_56;
          LongImmediate = XmGetCodeByte(a1, v17, (VOID *)7);
LABEL_62:
          v13 = *(_DWORD *)(a1 + 36) + LongImmediate;
          return(unsigned int)(v13 + (*(_DWORD *)(a1 + 4 * v7 + 24) << v6));
        }
        v19 = XmGetCodeByte(a1, v17, (VOID *)7);
LABEL_27:
        v13 = *(_DWORD *)(a1 + 32) + v19;
        return(unsigned int)(v13 + (*(_DWORD *)(a1 + 4 * v7 + 24) << v6));
      }
      v20 = XmGetCodeByte(a1, v16, (VOID *)7);
LABEL_29:
      v13 = *(_DWORD *)(a1 + 28) + v20;
      return(unsigned int)(v13 + (*(_DWORD *)(a1 + 4 * v7 + 24) << v6));
    }
    v21 = XmGetCodeByte(a1, v15, (VOID *)7);
    goto LABEL_31;
  }
  if( (_DWORD)v8 == 6 )
  {
    v13 = *(_DWORD *)(a1 + 48);
    return(unsigned int)(v13 + (*(_DWORD *)(a1 + 4 * v7 + 24) << v6));
  }
  if( !(_DWORD)v8 )
  {
    v13 = *(_DWORD *)(a1 + 24);
    return(unsigned int)(v13 + (*(_DWORD *)(a1 + 4 * v7 + 24) << v6));
  }
  v9 = v8 - 1;
  if( !v9 )
  {
    v13 = *(_DWORD *)(a1 + 28);
    return(unsigned int)(v13 + (*(_DWORD *)(a1 + 4 * v7 + 24) << v6));
  }
  v10 = v9 - 1;
  if( !v10 )
  {
    v13 = *(_DWORD *)(a1 + 32);
    return(unsigned int)(v13 + (*(_DWORD *)(a1 + 4 * v7 + 24) << v6));
  }
  v11 = v10 - 1;
  if( !v11 )
  {
    v13 = *(_DWORD *)(a1 + 36);
    return(unsigned int)(v13 + (*(_DWORD *)(a1 + 4 * v7 + 24) << v6));
  }
  v12 = v11 - 1;
  if( v12 )
  {
    if( v12 == 1 )
    {
      v13 = XmGetLongImmediate(a1);
      return(unsigned int)(v13 + (*(_DWORD *)(a1 + 4 * v7 + 24) << v6));
    }
LABEL_56:
    longjmp((unsigned __int64 *)(a1 + 160), (VOID *)7, (VOID *)7);
  }
  v13 = *(_DWORD *)(a1 + 40);
LABEL_13:
  if( !*(_BYTE *)(a1 + 140) )
    *(_DWORD *)(a1 + 116) = 2;
  return(unsigned int)(v13 + (*(_DWORD *)(a1 + 4 * v7 + 24) << v6));
}

Referenced by:

XmEvaluateAddressSpecifier