CmpRehashKcbSubtree

char __fastcall CmpRehashKcbSubtree(__int64 a1, __int64 a2){
  __int64 v2; 
  __int64 v4; 
  __int64 v5; 
  char v6; 
  __int64 v7; 
  __int64 v8; 
  int v9; 

  v2 = 0i64;
  v4 = a2;
  if( a1 )
  {
    do
    {
      v5 = *(_QWORD *)(v4 + 72);
      *(_QWORD *)(v4 + 72) = v2;
      v2 = v4;
      v4 = v5;
    }
    while( v2 != a1 );
  }
  v6 = 0;
  if( v2 )
  {
    do
    {
      v7 = *(_QWORD *)(v2 + 72);
      v8 = *(_QWORD *)(v2 + 80);
      *(_QWORD *)(v2 + 72) = v4;
      if( v4 )
        v9 = *(_DWORD *)(v8 + 8) + 37 * *(_DWORD *)(v4 + 16);
      else
        v9 = *(_DWORD *)(v8 + 8);
      if( v9 != *(_DWORD *)(v2 + 16) )
      {
        CmpRemoveKeyHash(*(_QWORD *)(a2 + 32), (_DWORD *)(v2 + 16));
        *(_DWORD *)(v2 + 16) = v9;
        CmpInsertKeyHash(*(_QWORD *)(a2 + 32), (_DWORD *)(v2 + 16));
        v6 = 1;
      }
      v4 = v2;
      v2 = v7;
    }
    while( v7 );
  }
  return v6;
}

Referenced by:

CmpSearchAndRehashWorker