RtlpInternEntryHash

INT64 __fastcall RtlpInternEntryHash(INT64 *a1, INT64 *a2){
  INT64 v2; 
  __int64 v3; 
  __int64 v4; 
  INT64 v5; 
  __int64 v6; 
  unsigned __int8 *v7; 
  unsigned __int64 v8; 
  __int64 v9; 
  __int64 v10; 
  INT64 result; 
  int v12; 
  int v13; 
  int v14; 
  int v15; 
  int v16; 
  int v17; 
  v2 = a1[2];
  v3 = *a1;
  v4 = 314159i64;
  if( v2 )
  {
    v5 = a1[1];
    do
    {
      v6 = *(_QWORD *)(v5 + 16);
      v7 = *(unsigned __int8 **)v5;
      v3 = *(_QWORD *)(v5 + 24) + v6 - ((*(_QWORD *)(v5 + 24) - 1i64) & (*(_QWORD *)(v5 + 24) + v3 - 1)) + v3 - 1;
      if( v6 >= 8 )
      {
        v8 = (unsigned __int64)v6 >> 3;
        v6 -= 8 * ((unsigned __int64)v6 >> 3);
        do
        {
          v9 = v7[6] + 37 * (v7[5] + 37 * (v7[4] + 37 * (v7[3] + 37 * (v7[2] + 37 * (v7[1] + 37 * (*v7 + 37 * v4))))));
          v10 = v7[7];
          v7 += 8;
          v4 = v10 + 37 * v9;
          --v8;
        }
        while( v8 );
      }
      if( (unsigned __int64)(v6 - 1) > 6 )
        goto LABEL_7;
      v12 = v6 - 1;
      if( v12 )
      {
        v13 = v12 - 1;
        if( v13 )
        {
          v14 = v13 - 1;
          if( v14 )
          {
            v15 = v14 - 1;
            if( v15 )
            {
              v16 = v15 - 1;
              if( v16 )
              {
                v17 = v16 - 1;
                if( v17 )
                {
                  if( v17 != 1 )
                    goto LABEL_7;
                  v4 = *v7++ + 37 * v4;
                }
                v4 = *v7++ + 37 * v4;
              }
              v4 = *v7++ + 37 * v4;
            }
            v4 = *v7++ + 37 * v4;
          }
          v4 = *v7++ + 37 * v4;
        }
        v4 = *v7++ + 37 * v4;
      }
      v4 = *v7 + 37 * v4;
LABEL_7:
      v5 += 32i64;
      --v2;
    }
    while( v2 );
  }
  result = v3 + v4;
  *a2 = v3;
  return result;
}

Referenced by:

RtlInternTableIntern