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