IopInitializeBootLogging
VOID __stdcall IopInitializeBootLogging(_LOADER_PARAMETER_BLOCK *LoaderBlock, INT8 *HeaderString){
struct _UNICODE_STRING *Pool_1;
struct _UNICODE_STRING *v5;
__int64 v6;
__int64 v7;
__int64 v8;
unsigned __int64 v9;
wchar_t *Buffer;
PUNICODE_STRING v11;
unsigned __int16 Length;
unsigned __int16 v13;
BOOL v14;
PVOID *i;
struct _STRING SourceString;
PMESSAGE_RESOURCE_ENTRY v17;
v17 = 0i64;
*(_DWORD *)(&SourceString.MaximumLength + 1) = 0;
if( !qword_140D2C030 )
{
Pool_1 = (struct _UNICODE_STRING *)IopVerifierExAllocatePool_1(NonPagedPoolNx, 0xB0ui64);
qword_140D2C030 = Pool_1;
v5 = Pool_1;
if( Pool_1 )
{
memset((INT64)Pool_1, 0i64);
ExInitializeResourceLite((PERESOURCE)&v5[4]);
ExAcquireResourceExclusiveLite((ERESOURCE *)&qword_140D2C030[4], 1u);
v6 = *((_QWORD *)LoaderBlock + 2);
v7 = -1i64;
if( RtlFindMessage(*(PVOID *)(v6 + 48), 0xBui64, 0i64, 0xB5ui64, (INT64)&v17) >= 0 )
{
v8 = -1i64;
SourceString.Buffer = (char *)v17->Text;
do
++v8;
while( v17->Text[v8] );
SourceString.Length = v8;
SourceString.MaximumLength = v8 + 1;
RtlAnsiStringToUnicodeString(qword_140D2C030, &SourceString, 1u);
if( qword_140D2C030->Length > 4u )
{
v9 = (unsigned __int16)(qword_140D2C030->Length - 4);
Buffer = qword_140D2C030->Buffer;
qword_140D2C030->Length = v9;
Buffer[v9 >> 1] = 0;
}
}
if( RtlFindMessage(*(PVOID *)(v6 + 48), 0xBui64, 0i64, 0xB6ui64, (INT64)&v17) < 0 )
{
v11 = qword_140D2C030;
}
else
{
SourceString.Buffer = (char *)v17->Text;
do
++v7;
while( v17->Text[v7] );
SourceString.Length = v7;
SourceString.MaximumLength = v7 + 1;
RtlAnsiStringToUnicodeString(qword_140D2C030 + 1, &SourceString, 1u);
v11 = qword_140D2C030;
Length = qword_140D2C030[1].Length;
if( Length > 4u )
{
v13 = Length - 4;
qword_140D2C030[1].Length = v13;
v11[1].Buffer[(unsigned __int64)v13 >> 1] = 0;
}
}
RtlCreateUnicodeStringFromAsciiz(v11 + 3, HeaderString + 1);
LOBYTE(v14) = 1;
ExAcquireResourceSharedLite(&PsLoadedModuleResource, v14);
for( i = (PVOID *)PsLoadedModuleList; i != &PsLoadedModuleList; i = (PVOID *)*i )
IopBootLog((UNICODE_STRING *)(i + 9), 1u);
ExReleaseResourceLite(&PsLoadedModuleResource);
ExReleaseResourceLite((PERESOURCE)&qword_140D2C030[4]);
}
}
}Referenced by:
Phase1InitializationDiscard