EnlistKeyBodyWithKCB

__int64 __fastcall EnlistKeyBodyWithKCB(_QWORD *a1, char a2){
  __int64 *v2; 
  unsigned int v3; 
  unsigned int v4; 
  __int64 v6; 
  __int64 **v7; 
  v2 = a1 + 4;
  v3 = 0;
  a1[5] = a1 + 4;
  v4 = 0;
  a1[4] = a1 + 4;
  while( _InterlockedCompareExchange64((volatile signed __int64 *)(a1[1] + 8i64 * v4 + 136), (signed __int64)a1, 0i64) )
  {
    if( ++v4 >= 4 )
    {
      if( (a2 & 2) != 0 )
      {
        v6 = a1[1] + 120i64;
        v7 = *(__int64 ***)(a1[1] + 128i64);
        if( *v7 != (__int64 *)v6 )
          __fastfail(3u);
        *v2 = v6;
        v2[1] = (__int64)v7;
        *v7 = v2;
        *(_QWORD *)(v6 + 8) = v2;
      }
      else
      {
        return(unsigned int)-1073741267;
      }
      return v3;
    }
  }
  return v3;
}

Referenced by:

CmRenameKey
CmpCreateRegistryRoot