// SetupRecordsNavigate - decompiled from Platform.efi
bool __fastcall SetupRecordsNavigate(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5)
{
  UINTN AllocationSize; // rbx
  const CHAR8 *ZeroPool; // rsi
  __int64 v12; // rax
  __int64 v13; // rdi
  unsigned __int64 v14; // rax
  __int64 v15; // r9
  void *v16; // rbx
  _BYTE v17[40]; // [rsp+30h] [rbp-28h] BYREF

  if ( !a4 ) /*0xa46f*/
    Assert((__int64)"e:\\hs\\MdeModulePkg\\Library\\UefiHiiLib\\HiiLib.c", 2933, (__int64)"Buffer != ((void *) 0)"); /*0xa484*/
  AllocationSize = 2 * SetupOptionQuery(L"GUID=00000000000000000000000000000000&NAME=0000&PATH=00") + 66; /*0xa495*/
  ZeroPool = (const CHAR8 *)AllocateZeroPool(AllocationSize); /*0xa4be*/
  AsciiStrLen(ZeroPool); /*0xa4c1*/
  if ( !ZeroPool ) /*0xa4c9*/
    return 0; /*0xa4c9*/
  if ( !a4 ) /*0xa4d5*/
    Assert((__int64)"e:\\hs\\MdeModulePkg\\Library\\UefiHiiLib\\HiiLib.c", 571, (__int64)"Block != ((void *) 0)"); /*0xa4ea*/
  v12 = (*(__int64 (__fastcall **)(__int64, const CHAR8 *, __int64, __int64, __int64 *, _BYTE *))(qword_FF78 + 24))( /*0xa519*/
          qword_FF78,
          ZeroPool,
          a4,
          a3,
          &a5,
          v17);
  v13 = a5; /*0xa51c*/
  if ( v12 < 0 ) /*0xa52a*/
    v13 = 0; /*0xa52a*/
  ExtractConfig(); /*0xa52e*/
  if ( !v13 ) /*0xa536*/
    return 0; /*0xa4cb*/
  v14 = SetupOptionQuery(L"GUID=00000000000000000000000000000000&NAME=0000&PATH=00"); /*0xa53f*/
  v16 = SetupKeywordHandler(a1, a2, (void *)(v13 + 2 * (v14 + 1)), v15); /*0xa559*/
  ExtractConfig(); /*0xa55c*/
  return v16 != 0; /*0xa57b*/
}
