PopEtAggregateFind

NTSTATUS __stdcall PopEtAggregateFind(INT64 a1, UINT8 *a2, INT64 *a3){
  UINT8 *v5; 
  INT64 v6; 
  __int64 v7; 
  __int64 v8; 
  unsigned int v9; 
  __int64 v10; 
  __int64 v11; 

  v5 = a2;
  v6 = 314159i64;
  v7 = 4i64;
  do
  {
    v8 = *v5;
    v5 += 8;
    v6 = *(v5 - 1)
       + 37
       * (*(v5 - 2)
        + 37
        * (*(v5 - 3) + 37 * (*(v5 - 4) + 37 * (*(v5 - 5) + 37 * (*(v5 - 6) + 37 * (*(v5 - 7) + 37 * (v8 + 37 * v6)))))));
    --v7;
  }
  while( v7 );
  v9 = *(_DWORD *)(a1 + 52);
  *a3 = v6;
  v10 = -1i64 << (v9 & 0x1F);
  v11 = v10 & v6;
  do
  {
    if( v7 )
      goto LABEL_7;
    if( v9 >> 5 )
    {
      v7 = *(_QWORD *)(a1 + 56)
         + 8i64
         * ((37
           * (BYTE6(v11)
            + 37
            * (BYTE5(v11)
             + 37
             * (BYTE4(v11)
              + 37 * (BYTE3(v11) + 37 * (BYTE2(v11) + 37 * (BYTE1(v11) + 37 * ((unsigned __int8)v11 + 11623883)))))))
           + HIBYTE(v11)) & ((v9 >> 5) - 1));
LABEL_7:
      while( 1 )
      {
        v7 = *(_QWORD *)v7;
        if( (v7 & 1) != 0 )
          break;
        if( v11 == (v10 & *(_QWORD *)(v7 + 8)) )
          goto LABEL_11;
      }
      v7 = 0i64;
LABEL_11:
      if( v7 )
        continue;
    }
    return 0;
  }
  while( memcmp((const VOID *)(v7 + 16), a2, 0x20ui64) );
  return v7;
}

Referenced by:

PopEtAggregateGet