CmpTryToLockKcbExclusive

CHAR __fastcall CmpTryToLockKcbExclusive(INT64 a1){
  void *v1; 
  CHAR v3; 
  _BYTE *v4; 
  v1 = (void *)(a1 + 48);
  v3 = 1;
  LODWORD(v4) = KeAbPreAcquire((PVOID)(a1 + 48), 0i64, 1ui64);
  if( _interlockedbittestandset64((volatile signed __int32 *)v1, 0i64) )
  {
    if( v4 )
      KeAbPostReleaseEx(v1, v4);
    return 0;
  }
  else
  {
    if( v4 )
      v4[26] |= 1u;
    *(_QWORD *)(a1 + 56) = KeGetCurrentThread();
  }
  return v3;
}

Referenced by:

CmpCreateKeyControlBlock
CmpCreateRegistryRoot