// GetDxeServicesTable - decompiled from Platform.efi
unsigned __int64 __fastcall GetDxeServicesTable(const void *DestinationBuffer, _QWORD *a2, UINTN Length)
{
__int64 SystemTable; // rdi
__int64 v6; // rbx
__int64 i; // r14
if ( !DestinationBuffer ) /*0x7702*/
Assert((__int64)"e:\\hs\\MdePkg\\Library\\UefiLib\\UefiLib.c", 97, (__int64)"TableGuid != ((void *) 0)"); /*0x7715*/
if ( !a2 ) /*0x771d*/
Assert((__int64)"e:\\hs\\MdePkg\\Library\\UefiLib\\UefiLib.c", 98, (__int64)"Table != ((void *) 0)"); /*0x7730*/
SystemTable = SystemTable; /*0x7735*/
v6 = 0; /*0x773c*/
*a2 = 0; /*0x773e*/
if ( !*(_QWORD *)(SystemTable + 104) ) /*0x7742*/
return 0x800000000000000EuLL; /*0x776b*/
for ( i = 0; /*0x7748*/
!(unsigned __int8)CompareMem(DestinationBuffer, (const void *)(i + *(_QWORD *)(SystemTable + 112)), Length);
i += 24 )
{
if ( (unsigned __int64)++v6 >= *(_QWORD *)(SystemTable + 104) ) /*0x7769*/
return 0x800000000000000EuLL; /*0x7769*/
}
*a2 = *(_QWORD *)(*(_QWORD *)(SystemTable + 112) + 24 * v6 + 16); /*0x779f*/
return 0; /*0x7789*/
}