KsepSdbBootInitialize

INT64 __stdcall KsepSdbBootInitialize(PVOID Src, size_t Size){
  __int64 v2; 
  unsigned int v4; 
  __int64 v5; 
  UINT8 *v6; 
  unsigned int v7; 
  UINT8 *v8; 
  PVOID *inited; 
  WCHAR *v10; 
  UINT64 v11; 
  WCHAR *v12; 
  __int64 v14; 
  __int64 v15; 
  UINT64 v16; 
  UINT64 *v17; 
  v4 = Size;
  v5 = v2;
  KsepPoolAllocatePaged((unsigned int)Size);
  v7 = 0;
  v8 = v6;
  if( v6 )
  {
    memmove(v6, (UINT8 *)Src, v4);
    inited = (PVOID *)SdbInitDatabaseInMemory(v8, v4);
    if( inited )
    {
      *(_QWORD *)(v5 + 8) = v8;
      *(_QWORD *)v5 = inited;
      *(_DWORD *)(v5 + 48) = SdbGetDatabaseEdition(inited[1], v10, v11, v12, v16, v17);
    }
    else
    {
      v7 = -1073741823;
      v15 = ((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryErrorsIndex, 1u) + 1) & 0x3F;
      KsepHistoryErrors[2 * v15 + 1] = -1073741823;
      KsepHistoryErrors[2 * v15] = 590004;
      if( (KsepDebugFlag & 2) != 0 )
        KsepDebugPrint(1i64, "KSE: SdbInitDatabaseInMemory failed during boot!\n");
      KsepLogError(1, "KSE: SdbInitDatabaseInMemory failed during boot!\n");
      KsepPoolFreePaged(v8);
    }
  }
  else
  {
    v7 = -1073741670;
    v14 = ((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryErrorsIndex, 1u) + 1) & 0x3F;
    KsepHistoryErrors[2 * v14 + 1] = -1073741670;
    KsepHistoryErrors[2 * v14] = 589988;
    if( (KsepDebugFlag & 2) != 0 )
      KsepDebugPrint(0i64, "KSE: Failed to allocate memory for shim database during boot!\n");
    KsepLogError(0, "KSE: Failed to allocate memory for shim database during boot!\n");
  }
  return v7;
}

Referenced by:

KseShimDatabaseBootInitialize