EnlistKeyBodyWithKCB

VOID __stdcall EnlistKeyBodyWithKCB(_CM_KEY_BODY *KeyBody, UINT64 ControlFlags){
  _LIST_ENTRY *p_KeyBodyList; 
  int v3; 
  _LIST_ENTRY *v4; 
  _LIST_ENTRY *v5; 

  p_KeyBodyList = &KeyBody->KeyBodyList;
  KeyBody->KeyBodyList.Blink = &KeyBody->KeyBodyList;
  v3 = 0;
  KeyBody->KeyBodyList.Flink = &KeyBody->KeyBodyList;
  while( _InterlockedCompareExchange64(
            (volatile signed __int64 *)&KeyBody->KeyControlBlock->KeyBodyArray[v3],
            (signed __int64)KeyBody,
            0i64) )
  {
    if( (unsigned int)++v3 >= 4 )
    {
      if( (ControlFlags & 2) != 0 )
      {
        v4 = (_LIST_ENTRY *)KeyBody->KeyControlBlock->gap78;
        v5 = *(_LIST_ENTRY **)&KeyBody->KeyControlBlock->gap78[8];
        if( v5->Flink != v4 )
          __fastfail(3u);
        p_KeyBodyList->Flink = v4;
        p_KeyBodyList->Blink = v5;
        v5->Flink = p_KeyBodyList;
        v4->Blink = p_KeyBodyList;
      }
      return;
    }
  }
}

Referenced by:

CmRenameKey
CmpCreateRegistryRoot