ExpLoadAndSortLicensingCacheDescriptors

NTSTATUS __stdcall ExpLoadAndSortLicensingCacheDescriptors(){
  _EX_PUSH_LOCK *v0; 
  INT64 v1; 
  _EX_PUSH_LOCK *v2; 
  int v3; 
  NTSTATUS v4; 
  unsigned int *v6; 
  int v7; 
  _DWORD *v8; 
  UINT64 v9; 
  char v10; 
  INT64 *v11; 
  UINT64 v12; 
  UINT64 v13; 
  _ETHREAD *CurrentThread; 
  _ETHREAD *v15; 
  char v16; 
  char v17; 

  v1 = (INT64)v0;
  LODWORD(v13) = 0;
  v17 = 0;
  v16 = 0;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  v2 = v0 + 5855;
  ExAcquirePushLockSharedEx(v0 + 5855, 0i64);
  if( *(_BYTE *)(v1 + 46992) )
  {
    LODWORD(v13) = -1073741762;
  }
  else if( *(_BYTE *)(v1 + 46828) )
  {
    v3 = 0;
    if( !*(_DWORD *)(v1 + 46824) )
      v3 = -1073741772;
    LODWORD(v13) = v3;
  }
  else
  {
    v17 = 1;
  }
  if( _InterlockedCompareExchange64(&v2->_bf_0, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared(v2);
  KeAbPostRelease(v2);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  v4 = v13;
  if( (v13 & 0x80000000) == 0i64 && v17 == 1 )
  {
    v15 = (_ETHREAD *)KeGetCurrentThread();
    --v15->Tcb.KernelApcDisable;
    ExAcquirePushLockExclusiveEx(v2, 0i64);
    if( *(_BYTE *)(v1 + 46828) == 1 )
      goto LABEL_30;
    v6 = *(unsigned int **)v1;
    if( *(_QWORD *)v1 )
    {
      v7 = sub_1407A2000((unsigned int **)v1);
      LODWORD(v13) = v7;
      if( v7 < 0 )
        goto LABEL_30;
    }
    else
    {
      v6 = *(unsigned int **)(v1 + 46832);
      if( !v6 )
        goto LABEL_28;
      v7 = v13;
    }
    if( (v6[3] & 1) != 0 )
      ExpSetLicenseTamperState(v1, 2i64);
    v8 = (_DWORD *)(v1 + 46824);
    v9 = v1 + 24;
    if( !*(_DWORD *)(v1 + 46824) )
    {
      v7 = sub_1407A2064((__int64)v6, 1, (VOID *)(v1 + 24), 0xB6Du, (unsigned int *)(v1 + 46824));
      LODWORD(v13) = v7;
      v9 = v1 + 24;
    }
    if( v7 >= 0 )
    {
      if( *v8 )
      {
        qsort(v9, (unsigned int)*v8, 0x10ui64, (INT64)sub_1407A6B40, v11, v12, v13);
        *(_BYTE *)(v1 + 46828) = 1;
      }
      else
      {
        *(_BYTE *)(v1 + 46828) = 1;
        LODWORD(v13) = -1073741772;
      }
      goto LABEL_30;
    }
    if( v7 != -1073741789 )
    {
LABEL_30:
      v10 = _InterlockedExchangeAdd64(&v2->_bf_0, 0xFFFFFFFFFFFFFFFFui64);
      if( (v10 & 2) != 0 && (v10 & 4) == 0 )
        ExfTryToWakePushLock(v2);
      KeAbPostRelease(v2);
      KeLeaveCriticalRegionThread(KeGetCurrentThread());
      v4 = v13;
      goto LABEL_12;
    }
LABEL_28:
    LODWORD(v13) = -1073741762;
    *(_BYTE *)(v1 + 46992) = 1;
    v16 = 1;
    goto LABEL_30;
  }
LABEL_12:
  if( v16 )
    ntoskrnl_24(&KernelLicensingCacheCorrupt);
  return v4;
}

Referenced by:

SLQueryLicenseValueInternal