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