/** @file
  SlotDataUpdateDxeNeonCityEPRP.c -- SlotDataUpdateDxeNeonCityEPRP

  Auto-converted from IDA decompiler output.
  Functions: 1

Copyright (c) HR650X BIOS Decompilation Project
**/

#include "SlotDataUpdateDxeNeonCityEPRP.h"


// Function: ModuleEntryPoint
EFI_STATUS ModuleEntryPoint(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
{
  EFI_STATUS result; // rax
  __int64 v4; // [rsp+30h] [rbp+8h] BYREF

  ::ImageHandle = (__int64)ImageHandle;
  if (!ImageHandle) {
    sub_5C0(
      "e:\\hs\\MdePkg\\Library\\UefiBootServicesTableLib\\UefiBootServicesTableLib.c",
      51,
      "gImageHandle != ((void *) 0)");
  }

  ::SystemTable = (__int64)SystemTable;
  if (!SystemTable) {
    sub_5C0(
      "e:\\hs\\MdePkg\\Library\\UefiBootServicesTableLib\\UefiBootServicesTableLib.c",
      57,
      "gST != ((void *) 0)");
  }

  BootServices = (__int64)SystemTable->BootServices;
  if (!BootServices) {
    sub_5C0(
      "e:\\hs\\MdePkg\\Library\\UefiBootServicesTableLib\\UefiBootServicesTableLib.c",
      63,
      "gBS != ((void *) 0)");
  }

  RuntimeServices = (__int64)SystemTable->RuntimeServices;
  if (!RuntimeServices) {
    sub_5C0(
      "e:\\hs\\MdePkg\\Library\\UefiBootServicesTableLib\\UefiBootServicesTableLib.c",
      47,
      "gRT != ((void *) 0)");
  }

  sub_600();
  v4 = 0;
  sub_538(0x80000000LL, "UBA:SlotDataUpdate-TypeNeonCityEPRP\n");
  result = (*(__int64 ( **)(void *, _QWORD, __int64 *))(BootServices + 320))(&unk_B50, 0, &v4);
  if ((result & 0x8000000000000000uLL) == 0LL) {
    return (*(EFI_STATUS ( **)(__int64, void *, void *, __int64))(v4 + 16))(v4, &unk_B60, &unk_B80, 32);
  }

  return result;
}
