unsigned __int64 __fastcall sub_5B84(int a1, unsigned int *a2)
{
unsigned int v2; // ebx
unsigned __int64 v3; // rdi
_DWORD *v5; // rax
__int64 n1389; // rdx
unsigned __int64 v8; // [rsp+40h] [rbp+18h] BYREF
v2 = (unsigned __int16)a1; /*0x5b95*/
v3 = BYTE2(a1); /*0x5ba0*/
v5 = sub_5C64(&v8); /*0x5ba6*/
if ( v3 >= v8 )
{
sub_5408(0x80000000LL, "GPIO ERROR: Group argument (%d) exceeds GPIO group range\n", v3);
n1389 = 1389; /*0x5bcb*/
LABEL_3:
sub_5450( /*0x5bd0*/
(__int64)"e:\\hs\\PurleySktPkg\\SouthClusterLbg\\Library\\PeiDxeSmmGpioLib\\GpioLib.c",
n1389,
(__int64)"((BOOLEAN)(0==1))");
return 0x8000000000000002uLL; /*0x5bed*/
}
if ( v2 >= v5[15 * (unsigned int)v3 + 14] )
{
sub_5408(0x80000000LL, "GPIO ERROR: Pin number (%d) exceeds possible range for this group\n", v2);
n1389 = 1398; /*0x5c0d*/
goto LABEL_3; /*0x5c12*/
}
*a2 = (*(_DWORD *)(((LOBYTE(v5[15 * (unsigned int)v3]) | 0xFD00LL) << 16) /*0x5c4d*/
| (unsigned __int16)(LOWORD(v5[15 * (unsigned int)v3 + 1]) + 4 * (v2 >> 3)))
& (unsigned int)(3 << (4 * (v2 & 7)))) >> (4 * (v2 & 7));
return 0; /*0x5c5b*/
}