// 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*/
}