/* _ModuleEntryPoint @ 0xffc1543e size=0xed */
EFI_STATUS ModuleEntryPoint(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
{
void *v2; // ecx
int v3; // ebp
void *v4; // ecx
void *v5; // ecx
int ModuleBase; // eax
bool v7; // zf
EFI_STATUS result; // eax
int v9; // [esp-14h] [ebp-1Ch]
_DWORD *v10; // [esp-14h] [ebp-1Ch]
_BYTE v11[6]; // [esp-Ch] [ebp-14h] BYREF
int v12; // [esp-4h] [ebp-Ch] BYREF
_BYTE *v13; // [esp+0h] [ebp-8h]
int v14; // [esp+4h] [ebp-4h]
if ( *(char *)(DxeIplGetModuleBase(v2) + 1024068) >= 0 ) /*0xffc1544f*/
{
DxeIplInitGlobalFlags(v4); /*0xffc15451*/
ModuleBase = DxeIplGetModuleBase(v5); /*0xffc15456*/
*(_BYTE *)(ModuleBase + 1024068) |= 0x80u; /*0xffc15462*/
}
DxeIplInstallPpi(dword_FFC18D18, (int (*)())DxeIplPpiNotifyCallback, (int (*)())DxeIplPeiEndCallback); /*0xffc15473*/
DxeIplInstallPpi(dword_FFC18D58, (int (*)())DxeIplDxeIplPpiNotify, (int (*)())DxeIplEndOfPeiNotify); /*0xffc15489*/
off_FFC18DF8 = &unk_FFC18B10; /*0xffc15493*/
n64 = 64; /*0xffc1549d*/
v14 = v3; /*0xffc154ad*/
v7 = DxeIplGetPlatformBootMode() == 17; /*0xffc154bb*/
v13 = v11; /*0xffc154c1*/
if ( v7 ) /*0xffc154c4*/
{
__sidt(v13); /*0xffc15506*/
(*(void (__cdecl **)(_DWORD, void *))(**(_DWORD **)(*(_DWORD *)&v11[2] - 4) + 36))( /*0xffc15517*/
*(_DWORD *)(*(_DWORD *)&v11[2] - 4),
&unk_FFC18A64);
return DxeIplReportStatus(&unk_FFC18A7C); /*0xffc15517*/
}
__sidt(v13); /*0xffc154c9*/
result = (*(int (__cdecl **)(EFI_HANDLE))(**(_DWORD **)(*(_DWORD *)&v11[2] - 4) + 116))(ImageHandle); /*0xffc154d5*/
if ( result ) /*0xffc154db*/
{
result = DxeIplLocatePpiByGuid((int)&unk_FFC18D68, 0, v9, (int)&v12); /*0xffc154e9*/
if ( (result & 0x80000000) == 0 ) /*0xffc154f2*/
{
DxeIplDebugPrint(v10); /*0xffc154f9*/
return DxeIplReportStatus(&unk_FFC18A7C); /*0xffc1551c*/
}
}
return result; /*0xffc1552a*/
}