sub_14094DC8C

__int64 __fastcall sub_14094DC8C(_EX_PUSH_LOCK *a1){
  _EX_PUSH_LOCK *v2; 
  UINT64 CreateOptions; 
  UINT64 CreateOptionsa; 
  _ETHREAD *CurrentThread; 
  char v7; 
  NTSTATUS v8; 
  VOID *KeyHandle; 

  v8 = 0;
  KeyHandle = 0i64;
  v7 = 0;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  v2 = a1 + 5855;
  ExAcquirePushLockSharedEx(a1 + 5855, 0i64);
  if( a1[5854]._bf_0 )
  {
    LODWORD(CreateOptions) = 0;
    v8 = ZwCreateKey(&KeyHandle, 0x20006ui64, (_OBJECT_ATTRIBUTES *)&stru_140984900, 0i64, 0i64, CreateOptions, 0i64);
    if( v8 >= 0 )
    {
      v7 = 1;
      LODWORD(CreateOptionsa) = *(_DWORD *)a1[5854]._bf_0;
      v8 = ZwSetValueKey(KeyHandle, (_UNICODE_STRING *)&stru_1409841B8, 0i64, 3ui64, a1[5854].Ptr, CreateOptionsa);
    }
  }
  if( _InterlockedCompareExchange64(&v2->_bf_0, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared(v2);
  KeAbPostRelease(v2);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  if( v7 == 1 )
    ZwClose((_HANDLE)KeyHandle);
  return(unsigned int)v8;
}

Referenced by:

SLUpdateLicenseDataInternal