Newer
Older
AMI-Aptio-BIOS-Reversed / MdeModulePkg / Core / DxeIplPeim / _ModuleEntryPoint.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Full restructure
/* _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*/
}