HalpFirmwareInitDiscard
NTSTATUS __stdcall HalpFirmwareInitDiscard(_LOADER_PARAMETER_BLOCK *LoaderBlock){
NTSTATUS v2;
__int128 v4;
int v5;
__int64 *v6;
__int64 v7;
off_140C00840[0] = (__int64(__fastcall *)())HalpQueryCapsuleCapabilities;
off_140C00848[0] = (__int64(__fastcall *)())HalpUpdateCapsule;
off_140C00940[0] = HalpIsEFIRuntimeActive;
off_140C00980[0] = (__int64(__fastcall *)())HalpEnumerateEnvironmentVariablesWithFilter;
if( (*((_DWORD *)LoaderBlock + 66) & 1) != 0 )
{
v4 = *(_OWORD *)((char *)LoaderBlock + 264);
HalFirmwareTypeEfi = 1;
HalFirmwareInformationBlock = v4;
xmmword_140C49CD0 = *(_OWORD *)((char *)LoaderBlock + 280);
xmmword_140C49CE0 = *(_OWORD *)((char *)LoaderBlock + 296);
xmmword_140C49CF0 = *(_OWORD *)((char *)LoaderBlock + 312);
HalpEfiTimeCalls = 0;
HalpEfiTimeWrites = 0;
HalpEfiVariableCalls = 0;
HalpEfiVariableWrites = 0;
v5 = *((_DWORD *)LoaderBlock + 73);
v2 = *((_DWORD *)LoaderBlock + 72);
HalEfiSetVirtualAddressMapStatus = v2;
HalEfiMissedMappingsCount = v5;
if( v5 || !*((_QWORD *)LoaderBlock + 35) )
v2 = -1073741823;
if( v2 < 0 )
KeBugCheckEx(0x5Cu, 0x5000ui64, v2, 0i64, 0i64);
v6 = (__int64 *)*((_QWORD *)LoaderBlock + 35);
HalEfiRuntimeServicesBlock[0] = *v6;
qword_140E01878 = v6[1];
qword_140E01880 = v6[10];
qword_140E01888 = v6[6];
qword_140E01890 = v6[7];
qword_140E01898 = v6[8];
qword_140E018A0 = v6[11];
qword_140E018A8 = v6[12];
v7 = v6[13];
HalpEfiRuntimeCallbackRecord.State = 0;
qword_140E018B0 = v7;
KeRegisterBugCheckReasonCallback(
&HalpEfiRuntimeCallbackRecord,
(PKBUGCHECK_REASON_CALLBACK_ROUTINE)HalpEfiBugCheckAddPagesCallback,
KbCallbackAddPages,
(PUCHAR)"HalEfiRuntime");
if( (*((_DWORD *)LoaderBlock + 66) & 2) != 0 )
HalEfiRuntimeServicesTable = (__int64 *)HalpIumEfiWrapperTable;
}
else
{
HalFirmwareTypeEfi = 0;
return 0;
}
return v2;
}Referenced by:
HalpFirmwareInitSystem