Newer
Older
AMI-Aptio-BIOS-Reversed / SetupDefaultLoad / sub_57C4.txt
@Ajax Dong Ajax Dong 2 days ago 3 KB Init
__int64 __fastcall sub_57C4(__int64 a1, _BYTE *p_n8, _BYTE *a3, _BYTE *p_n4, _BYTE *n11_1)
{
  __int64 v5; // rax
  _BYTE *n11_4; // r15
  _BYTE *p_n4_1; // rdi
  bool v8; // r13
  _BYTE *p_n8_1; // r14
  char n11; // r12
  __int64 result; // rax
  char n11_2; // cl
  bool v14; // bl
  bool v15; // zf
  __int64 v16; // [rsp+40h] [rbp-C0h] BYREF
  unsigned __int64 v17; // [rsp+48h] [rbp-B8h]
  _BYTE v18[298]; // [rsp+50h] [rbp-B0h] BYREF
  char n11_3; // [rsp+17Ah] [rbp+7Ah]
  __int64 v20; // [rsp+3C0h] [rbp+2C0h] BYREF
  unsigned int v21; // [rsp+3C8h] [rbp+2C8h] BYREF
  __int64 n814; // [rsp+3D0h] [rbp+2D0h] BYREF

  v20 = a1; /*0x57c9*/
  v5 = qword_7920; /*0x57e8*/
  n11_4 = n11_1; /*0x57f1*/
  p_n4_1 = p_n4; /*0x57fb*/
  n814 = 814; /*0x57fe*/
  v8 = qword_7920 == 0; /*0x5809*/
  v16 = 0x4BB5EBA4EC87D643LL; /*0x580d*/
  v17 = 0xA90DB2363E3FE5A1uLL; /*0x5820*/
  p_n8_1 = p_n8; /*0x5828*/
  n11 = -1; /*0x5833*/
  *a3 = -1; /*0x5836*/
  *n11_4 = -1; /*0x583a*/
  *p_n8 = 0; /*0x583e*/
  *p_n4 = 0; /*0x5840*/
  v21 = 0; /*0x5843*/
  if ( v8 /*0x5887*/
    || (LOBYTE(v20) = 1,
        LOBYTE(p_n4) = 89,
        LOBYTE(p_n8) = 46,
        (*(__int64 (__fastcall **)(__int64, _BYTE *, _QWORD, _BYTE *, _QWORD, _BYTE, _BYTE **, __int64 *, __int64, unsigned __int64))(v5 + 16))(
          v5,
          p_n8,
          0,
          p_n4,
          0,
          0,
          &n11_1,
          &v20,
          v16,
          v17) < 0) )
  {
    v8 = 1; /*0x5897*/
  }
  else
  {
    n11 = (char)n11_1; /*0x5889*/
  }
  if ( (*(__int64 (__fastcall **)(const __int16 *, __int64 *, unsigned int *, __int64 *, _BYTE *))(qword_7940 + 72))( /*0x58cb*/
         L"Setup",
         &v16,
         &v21,
         &n814,
         v18) < 0 )
    return 0x8000000000000003uLL; /*0x58d7*/
  n11_2 = n11_3; /*0x58dc*/
  if ( !v8 ) /*0x58ee*/
    n11_2 = n11; /*0x58ee*/
  n11_3 = n11_2; /*0x58f1*/
  sub_5B28(17170432, &v20); /*0x58f9*/
  v14 = (_DWORD)v20 != 1; /*0x5911*/
  LODWORD(v20) = 0; /*0x5914*/
  sub_5B28(16973835, &v20); /*0x591d*/
  v15 = (_DWORD)v20 == 0; /*0x5924*/
  *p_n4_1 = 0; /*0x592a*/
  if ( v14 ) /*0x5932*/
  {
    if ( v15 ) /*0x5970*/
    {
      if ( !n11 ) /*0x5975*/
      {
        *a3 = 4; /*0x5999*/
        *n11_4 = 0; /*0x599c*/
        goto LABEL_34; /*0x599f*/
      }
      if ( n11 == 9 ) /*0x597b*/
      {
        *p_n8_1 = 4; /*0x5990*/
        *a3 = 8; /*0x5994*/
      }
      else
      {
        *p_n8_1 = 0; /*0x597d*/
        if ( n11 == 11 ) /*0x5984*/
        {
          *a3 = 4; /*0x598b*/
          goto LABEL_15; /*0x598e*/
        }
        *a3 = -1; /*0x5986*/
      }
LABEL_29:
      *n11_4 = -1; /*0x59b8*/
      goto LABEL_35; /*0x59bc*/
    }
    if ( !n11 ) /*0x59a4*/
    {
      *n11_4 = 8; /*0x59c8*/
      goto LABEL_33; /*0x59c8*/
    }
    *a3 = -1; /*0x59a6*/
    if ( n11 == 9 ) /*0x59ad*/
    {
      *p_n8_1 = 4; /*0x59be*/
    }
    else
    {
      *p_n8_1 = 0; /*0x59af*/
      if ( n11 != 11 ) /*0x59b6*/
        goto LABEL_29; /*0x59b6*/
    }
    *n11_4 = 8; /*0x59c2*/
    goto LABEL_35; /*0x59c6*/
  }
  if ( n11 == 1 ) /*0x593b*/
  {
    *a3 = 2; /*0x5965*/
    *n11_4 = 6; /*0x5968*/
LABEL_34:
    *p_n8_1 = 0; /*0x59cf*/
    goto LABEL_35; /*0x59cf*/
  }
  if ( n11 == 8 ) /*0x5940*/
  {
    *p_n8_1 = 4; /*0x5958*/
    *a3 = 4; /*0x595c*/
    *n11_4 = 4; /*0x595f*/
    goto LABEL_35; /*0x5963*/
  }
  if ( n11 != 10 ) /*0x5945*/
  {
    *n11_4 = -1; /*0x5947*/
LABEL_33:
    *a3 = -1; /*0x59cc*/
    goto LABEL_34; /*0x59cc*/
  }
  *p_n8_1 = 4; /*0x594d*/
  *a3 = 0; /*0x5951*/
LABEL_15:
  *n11_4 = 0; /*0x5953*/
LABEL_35:
  if ( v8 ) /*0x59d5*/
    return 0; /*0x59d5*/
  result = (*(__int64 (__fastcall **)(const __int16 *, __int64 *, _QWORD, __int64, _BYTE *))(qword_7940 + 88))( /*0x5a02*/
             L"Setup",
             &v16,
             v21,
             n814,
             v18);
  if ( result >= 0 ) /*0x5a08*/
    return 0; /*0x5a0a*/
  return result; /*0x5a14*/
}