Newer
Older
AMI-Aptio-BIOS-Reversed / SetupDefaultLoad / sub_5a28.txt
@Ajax Dong Ajax Dong 2 days ago 1 KB Init
unsigned __int64 __fastcall sub_5A28(unsigned int a1, __int64 a2, __int64 a3, char a4, int *a5)
{
  unsigned int v5; // ebx
  unsigned __int64 v7; // rdi
  __int64 v9; // rsi
  _QWORD v10[5]; // [rsp+20h] [rbp-28h] BYREF
  int v11; // [rsp+68h] [rbp+20h] BYREF

  LOBYTE(v11) = a4; /*0x5a32*/
  v5 = (unsigned __int16)a1; /*0x5a41*/
  v7 = BYTE2(a1); /*0x5a4a*/
  if ( !sub_5CFC(a1) )
  {
    sub_5408(
      0x80000000LL,
      "GPIO ERROR: Incorrect GpioPad define used on this chipset (Group=%d, Pad=%d)!\n",
      (unsigned int)v7,
      v5);
    return 0x8000000000000003uLL; /*0x5a77*/
  }
  v9 = sub_5C64(v10); /*0x5a86*/
  if ( v7 >= v10[0] )
  {
    sub_5408(0x80000000LL, "GPIO ERROR: Group argument (%d) exceeds GPIO group range\n", (unsigned int)v7);
    return 0x8000000000000002uLL; /*0x5ab1*/
  }
  if ( v5 >= *(_DWORD *)(v9 + 60 * v7 + 56) )
  {
    sub_5408(0x80000000LL, "GPIO ERROR: Pin number (%d) exceeds possible range for this group\n", v5);
    return 0x8000000000000002uLL; /*0x5ac7*/
  }
  sub_5B84(a1, &v11); /*0x5ad1*/
  if ( v11 )
  {
    sub_5408(0x80000000LL, "GPIO ERROR: Accessing pad not owned by host (Group=%d, Pad=%d)!\n", (unsigned int)v7, v5);
    return 0x8000000000000003uLL; /*0x5ae4*/
  }
  *a5 = *(_DWORD *)((unsigned __int16)(*(_DWORD *)(v9 + 60 * v7 + 52) + 8 * v5) /*0x5b0f*/
                  | ((*(unsigned __int8 *)(v9 + 60 * v7) | 0xFD00LL) << 16))
      & 2;
  return 0; /*0x5b1d*/
}