// GetAllHandlesByProtocol - decompiled from Platform.efi
void *GetAllHandlesByProtocol(char *x_UEFI_3, char a2, ...)
{
char *x_UEFI; // rsi
va_list v5; // r15
UINTN n3; // rbp
unsigned __int64 n3_1; // rbx
char n59_1; // al
char *x_UEFI_1; // rdi
char n59; // al
void *ZeroPool; // rax
char *x_UEFI_2; // [rsp+70h] [rbp+18h] BYREF
va_list va; // [rsp+70h] [rbp+18h]
va_list va1; // [rsp+78h] [rbp+20h] BYREF
va_start(va1, a2);
va_start(va, a2);
x_UEFI_2 = va_arg(va1, char *); /*0x7988*/
if ( !x_UEFI_3 ) /*0x79ad*/
Assert((__int64)"e:\\hs\\MdePkg\\Library\\UefiLib\\UefiLib.c", 1528, (__int64)"SupportedLanguages != ((void *) 0)"); /*0x79c2*/
x_UEFI = x_UEFI_2; /*0x79c7*/
if ( x_UEFI_2 ) /*0x79cf*/
{
va_copy(v5, va); /*0x79d5*/
do /*0x7a8e*/
{
n3 = 3; /*0x79dd*/
if ( BoolToString(x_UEFI) <= 3 ) /*0x79ea*/
n3_1 = BoolToString(x_UEFI); /*0x79f8*/
else
n3_1 = 3; /*0x79ec*/
if ( a2 ) /*0x79fe*/
{
LABEL_29:
while ( n3_1 ) /*0x7a88*/
{
x_UEFI_1 = x_UEFI_3; /*0x7a21*/
if ( *x_UEFI_3 ) /*0x7a1c*/
{
while ( 1 ) /*0x7a29*/
{
if ( a2 ) /*0x7a29*/
goto LABEL_36; /*0x7a29*/
while ( *x_UEFI_1 == 59 ) /*0x7a38*/
++x_UEFI_1; /*0x7a31*/
n59 = *x_UEFI_1; /*0x7a3a*/
n3 = 0; /*0x7a3c*/
while ( n59 && n59 != 59 ) /*0x7a42*/
n59 = x_UEFI_1[++n3]; /*0x7a47*/
if ( n3_1 <= n3 ) /*0x7a51*/
{
LABEL_36:
if ( !LocateHiiSetupConfig(x_UEFI_1, x_UEFI, n3_1) ) /*0x7a5c*/
break; /*0x7a5c*/
}
x_UEFI_1 += n3; /*0x7a66*/
if ( !*x_UEFI_1 ) /*0x7a69*/
goto LABEL_25; /*0x7a6c*/
}
ZeroPool = AllocateZeroPool(n3 + 1); /*0x7aaf*/
if ( ZeroPool ) /*0x7ab7*/
return CopyMem(ZeroPool, x_UEFI_1, n3); /*0x7ac2*/
return 0; /*0x7ab7*/
}
LABEL_25:
if ( a2 ) /*0x7a71*/
break; /*0x7a71*/
if ( !--n3_1 ) /*0x7a77*/
break; /*0x7a77*/
do /*0x7a83*/
{
if ( x_UEFI[n3_1] == 45 ) /*0x7a7d*/
break; /*0x7a7d*/
--n3_1; /*0x7a7f*/
}
while ( n3_1 ); /*0x7a83*/
}
}
else
{
n59_1 = *x_UEFI; /*0x7a04*/
n3_1 = 0; /*0x7a06*/
if ( *x_UEFI ) /*0x7a04*/
{
do /*0x7a18*/
{
if ( n59_1 == 59 ) /*0x7a0e*/
break; /*0x7a0e*/
n59_1 = x_UEFI[++n3_1]; /*0x7a13*/
}
while ( n59_1 ); /*0x7a18*/
goto LABEL_29; /*0x7a18*/
}
}
x_UEFI = (char *)*++v5; /*0x7a8e*/
}
while ( *v5 ); /*0x7a8e*/
}
return 0; /*0x7a9c*/
}