Newer
Older
AMI-Aptio-BIOS-Reversed / SetupDefaultLoad / sub_101C.txt
@Ajax Dong Ajax Dong 2 days ago 3 KB Init
char sub_101C()
{
  __int64 v0; // rax
  __int64 v1; // r8
  _BYTE *v2; // rdx
  unsigned __int16 v3; // ax
  __int64 v4; // rdx
  __int64 v5; // r9
  unsigned __int8 i; // bl
  __int64 v7; // r9
  __int64 v8; // rdx
  int v10; // [rsp+28h] [rbp-D8h]
  _BYTE v11[6688]; // [rsp+40h] [rbp-C0h] BYREF
  char n2; // [rsp+1A70h] [rbp+1970h] BYREF
  unsigned __int16 v13; // [rsp+1A78h] [rbp+1978h] BYREF
  __int16 v14; // [rsp+1A80h] [rbp+1980h] BYREF
  __int64 n6668; // [rsp+1A88h] [rbp+1988h] BYREF

  if ( qword_7920 /*0x1058*/
    || (v0 = (*(__int64 (__fastcall **)(void *, _QWORD, __int64 *))(qword_79B8 + 320))(&unk_7450, 0, &qword_7920),
        v0 >= 0) )
  {
    n6668 = 6668; /*0x106c*/
    v0 = (*(__int64 (__fastcall **)(const __int16 *, void *, _QWORD, __int64 *, _BYTE *))(qword_79C0 + 72))( /*0x109b*/
           L"SocketIioConfig",
           &unk_7470,
           0,
           &n6668,
           v11);
    if ( v0 >= 0 ) /*0x10a1*/
    {
      sub_1AA8(); /*0x10a7*/
      v13 = 0; /*0x10ac*/
      n6668 = 49; /*0x10bb*/
      if ( byte_7D91 && byte_7D60 ) /*0x10d0*/
      {
        v1 = (unsigned __int8)byte_7D60; /*0x10d2*/
        v2 = &unk_7D61; /*0x10d6*/
        v3 = v13; /*0x10dd*/
        do /*0x1126*/
        {
          if ( v2[1] <= 0x17u /*0x110e*/
            && *v2 <= 0xBu
            && v11[((unsigned __int64)(unsigned __int8)v2[1] >> 2) + 4266] == 1
            && v11[(unsigned __int8)v2[1] + 4278] == 1 )
          {
            v3 |= 1 << (*v2 & 0xF); /*0x1113*/
            v13 = v3; /*0x1117*/
          }
          v2 += 2; /*0x111e*/
          --v1; /*0x1122*/
        }
        while ( v1 ); /*0x1126*/
      }
      else
      {
        v3 = v13; /*0x112a*/
      }
      sub_5408(64, "SendVmdCommandToBp %x to BMC\
", v3); /*0x1141*/
      for ( i = 0; i < 0xAu; ++i ) /*0x1146*/
      {
        n2 = 0; /*0x114f*/
        LOBYTE(v5) = 96; /*0x115b*/
        LOBYTE(v10) = 2; /*0x116b*/
        LOBYTE(v4) = 46; /*0x1178*/
        v0 = (*(__int64 (__fastcall **)(__int64, __int64, _QWORD, __int64, unsigned __int16 *, int, _QWORD, char *))(qword_7920 + 16))( /*0x1184*/
               qword_7920,
               v4,
               0,
               v5,
               &v13,
               v10,
               0,
               &n2);
        if ( v0 >= 0 ) /*0x118a*/
        {
          (*(void (__fastcall **)(__int64))(qword_79B8 + 248))(5000); /*0x1198*/
          v14 = 0; /*0x119e*/
          LOBYTE(v7) = 97; /*0x11b2*/
          n2 = 2; /*0x11bc*/
          LOBYTE(v8) = 46; /*0x11d2*/
          LOBYTE(v10) = 0; /*0x11d4*/
          v0 = (*(__int64 (__fastcall **)(__int64, __int64, _QWORD, __int64, _QWORD, int, __int16 *, char *))(qword_7920 + 16))( /*0x11e2*/
                 qword_7920,
                 v8,
                 0,
                 v7,
                 0,
                 v10,
                 &v14,
                 &n2);
          if ( v0 < 0 ) /*0x11e8*/
            break; /*0x11e8*/
          LOBYTE(v0) = v13; /*0x11ea*/
          if ( (_BYTE)v14 == (_BYTE)v13 ) /*0x11f6*/
          {
            LOBYTE(v0) = HIBYTE(v13); /*0x11f8*/
            if ( HIBYTE(v14) == HIBYTE(v13) ) /*0x1204*/
              break; /*0x1204*/
          }
        }
      }
    }
  }
  else
  {
    qword_7920 = 0; /*0x105a*/
  }
  return v0; /*0x1211*/
}