Newer
Older
AMI-Aptio-BIOS-Reversed / SystemInventory / SystemInventory_sub_E14.c
@Ajax Dong Ajax Dong 2 days ago 28 KB Init
unsigned __int64 __fastcall sub_E14(
        unsigned __int64 a1,
        unsigned __int64 n0xF4240,
        __int64 a3,
        unsigned __int8 *a4,
        unsigned __int16 **a5)
{
  unsigned __int8 *v5; // rsi
  __int64 v6; // r12
  unsigned __int64 v8; // r13
  __int64 v9; // rdi
  __int64 v11; // r8
  int n1000000; // r9d
  __int64 n2_1; // r15
  unsigned __int64 n1000000_2; // rax
  unsigned int n1000000_1; // r9d
  unsigned __int64 v16; // rax
  unsigned int v17; // r9d
  unsigned __int64 v18; // rdi
  unsigned __int64 v19; // r10
  __int64 v20; // rax
  __int64 v21; // rcx
  unsigned __int8 *v22; // rdx
  unsigned __int8 *v23; // r8
  unsigned __int64 v24; // r9
  char v25; // r11
  unsigned __int64 v26; // rdi
  const char *_r_n_1; // rbx
  unsigned __int16 **v28; // r10
  unsigned __int8 *v29; // rdx
  int v30; // eax
  unsigned __int64 n13_1; // rcx
  unsigned __int16 *v32; // rax
  int v33; // eax
  unsigned __int8 *v34; // rdx
  unsigned __int64 v35; // rcx
  unsigned __int64 v36; // rcx
  unsigned __int64 v37; // rcx
  unsigned __int64 v38; // rcx
  unsigned __int64 v39; // rcx
  unsigned __int64 v40; // rcx
  __int64 v41; // r15
  int v42; // eax
  int v43; // eax
  unsigned __int8 *v44; // rdi
  int v45; // r15d
  int v46; // r14d
  unsigned __int16 v47; // ax
  unsigned __int64 v48; // rcx
  unsigned __int64 v49; // rcx
  unsigned __int64 v50; // rcx
  unsigned __int64 v51; // rcx
  unsigned __int64 n3; // rcx
  unsigned __int16 *n5; // rcx
  __int64 v54; // rbx
  char n43; // r14
  bool v56; // r15
  __int64 n16; // r8
  unsigned __int64 v58; // rdx
  int v59; // eax
  const char *i; // r8
  __int64 n512; // r14
  int v62; // edx
  __int64 v63; // rax
  __int64 v64; // rcx
  int v65; // r10d
  __int64 j; // rcx
  __int64 n2_3; // r11
  int v68; // r8d
  __int64 v69; // rdi
  unsigned __int64 v70; // r8
  unsigned __int64 v71; // rdx
  __int64 v72; // r14
  unsigned __int64 v73; // rsi
  __int16 v74; // cx
  unsigned __int64 v75; // rax
  __int64 m; // r8
  __int64 n; // rax
  __int64 v78; // rax
  int v79; // r8d
  __int64 v80; // rcx
  __int64 v81; // rax
  __int64 k; // rcx
  int v83; // eax
  unsigned __int64 n10; // rcx
  _BYTE *v85; // rax
  __int64 ii; // rdx
  __int64 v87; // [rsp+80h] [rbp-80h]
  __int64 v88; // [rsp+80h] [rbp-80h]
  unsigned __int64 v89; // [rsp+88h] [rbp-78h]
  unsigned int n2; // [rsp+90h] [rbp-70h]
  unsigned __int64 v91; // [rsp+98h] [rbp-68h]
  char n43_1; // [rsp+A0h] [rbp-60h]
  __int64 v93; // [rsp+B0h] [rbp-50h]
  unsigned __int64 v94; // [rsp+B0h] [rbp-50h]
  unsigned __int64 n13; // [rsp+B8h] [rbp-48h] BYREF
  unsigned __int16 *v96; // [rsp+C0h] [rbp-40h]
  __int64 n0xFFFF; // [rsp+C8h] [rbp-38h]
  unsigned __int64 v98; // [rsp+D0h] [rbp-30h]
  __int64 v99; // [rsp+D8h] [rbp-28h] BYREF
  __int64 n2_2; // [rsp+E0h] [rbp-20h]
  unsigned __int64 v101; // [rsp+E8h] [rbp-18h]
  _BYTE _r_n[40]; // [rsp+F0h] [rbp-10h] BYREF
  __int64 n512_1; // [rsp+118h] [rbp+18h]
  __int64 v104; // [rsp+168h] [rbp+68h]
  __int16 v105; // [rsp+170h] [rbp+70h]
  unsigned __int8 *v106; // [rsp+178h] [rbp+78h]
  bool v107; // [rsp+188h] [rbp+88h]

  v106 = a4; /*0xe19*/
  v5 = a4; /*0xe43*/
  LOWORD(v6) = a3; /*0xe46*/
  v8 = a1; /*0xe4c*/
  if ( n0xF4240 ) /*0xe55*/
  {
    v9 = a3 & 0x2000; /*0xe57*/
    if ( (a3 & 0x2000) == 0 && !a1 ) /*0xe6b*/
    {
      sub_788("e:\\hs\\MdePkg\\Library\\BasePrintLib\\PrintLibInternal.c", 578, "(Buffer != ((void *) 0))"); /*0xe7c*/
      if ( !v8 ) /*0xe84*/
        return 0; /*0xe84*/
    }
  }
  else
  {
    v9 = a3 & 0x2000; /*0xe8d*/
    if ( (a3 & 0x2000) == 0 ) /*0xe93*/
      goto LABEL_9; /*0xe93*/
  }
  if ( !v5 ) /*0xea1*/
  {
    sub_788("e:\\hs\\MdePkg\\Library\\BasePrintLib\\PrintLibInternal.c", 586, "(Format != ((void *) 0))"); /*0xeb2*/
    return 0; /*0xe88*/
  }
LABEL_9:
  if ( (v6 & 0x40) != 0 ) /*0xec0*/
  {
    if ( n0xF4240 > 0xF4240 ) /*0xed8*/
    {
      sub_788( /*0xee9*/
        "e:\\hs\\MdePkg\\Library\\BasePrintLib\\PrintLibInternal.c",
        595,
        "(BufferSize <= (_gPcd_FixedAtBuild_PcdMaximumUnicodeStringLength))");
      return 0; /*0xef9*/
    }
    n2 = 2; /*0xf02*/
  }
  else
  {
    if ( n0xF4240 > 0xF4240 ) /*0xf23*/
    {
      sub_788( /*0xf34*/
        "e:\\hs\\MdePkg\\Library\\BasePrintLib\\PrintLibInternal.c",
        600,
        "(BufferSize <= (_gPcd_FixedAtBuild_PcdMaximumAsciiStringLength))");
      return 0; /*0xf46*/
    }
    n2 = 1; /*0xf52*/
  }
  if ( (v6 & 0x100) != 0 ) /*0xf5e*/
  {
    if ( (unsigned __int64)sub_C9C(v5, 1000001, a3, 1000000) > 0xF4240 ) /*0xf80*/
      sub_788( /*0xf91*/
        "e:\\hs\\MdePkg\\Library\\BasePrintLib\\PrintLibInternal.c",
        611,
        "(StrnLenS ((CHAR16 *)Format, (_gPcd_FixedAtBuild_PcdMaximumUnicodeStringLength) + 1) <= (_gPcd_FixedAtBuild_PcdM"
        "aximumUnicodeStringLength))");
    if ( (unsigned __int64)sub_C9C(v5, 1000001, v11, n1000000) > 0xF4240 ) /*0xfaf*/
      return 0; /*0xfaf*/
    n2_1 = 2; /*0xfba*/
    n0xFFFF = 0xFFFF; /*0xfc0*/
  }
  else
  {
    n1000000_2 = sub_D0C(v5, 1000001); /*0xfdb*/
    if ( n1000000_2 > n1000000_1 ) /*0xfe6*/
    {
      sub_788( /*0xff7*/
        "e:\\hs\\MdePkg\\Library\\BasePrintLib\\PrintLibInternal.c",
        617,
        "(AsciiStrnLenS (Format, (_gPcd_FixedAtBuild_PcdMaximumAsciiStringLength) + 1) <= (_gPcd_FixedAtBuild_PcdMaximumA"
        "sciiStringLength))");
      n1000000_1 = 1000000; /*0xffc*/
    }
    v16 = sub_D0C(v5, n1000000_1 + 1); /*0x100a*/
    if ( v16 > v17 ) /*0x1015*/
      return 0; /*0x1015*/
    n2_1 = 1; /*0x101b*/
    n0xFFFF = 255; /*0x1021*/
  }
  n2_2 = n2_1; /*0x1029*/
  if ( v9 ) /*0x1030*/
  {
    v8 &= -(__int64)(n0xF4240 != 0); /*0x103b*/
  }
  else if ( !n0xF4240 ) /*0x1043*/
  {
    return 0; /*0x1043*/
  }
  v18 = 0; /*0x1049*/
  v19 = 0; /*0x104b*/
  v101 = 0; /*0x104e*/
  v87 = 0; /*0x1052*/
  v89 = 0; /*0x1056*/
  if ( v8 ) /*0x105d*/
  {
    v101 = v8; /*0x106a*/
    v18 = v8 + n2 * (n0xF4240 - 1); /*0x106e*/
    v89 = v18; /*0x1071*/
  }
  if ( n2_1 == 1 ) /*0x1079*/
    LODWORD(v20) = 0; /*0x107b*/
  else
    LODWORD(v20) = (char)v5[1] << 8; /*0x1083*/
  v21 = *v5; /*0x1086*/
  v20 = (int)v20; /*0x1089*/
LABEL_243:
  n10 = n0xFFFF & (v20 | v21); /*0x1c30*/
  n13 = n10; /*0x1c3a*/
  if ( n10 )
  {
    v22 = v5; /*0x1090*/
    v23 = v5; /*0x1093*/
    if ( !v8 || v8 < v18 )
    {
      v96 = 0; /*0x10a4*/
      v24 = 0; /*0x10a9*/
      v98 = 0; /*0x10ac*/
      v6 &= 0x2140u; /*0x10b2*/
      n43_1 = 0; /*0x10b9*/
      v25 = 0; /*0x10bc*/
      v105 = v6; /*0x10bf*/
      v107 = 0; /*0x10c3*/
      v26 = 1; /*0x10c9*/
      v93 = 1; /*0x10ce*/
      v91 = 0; /*0x10d6*/
      if ( n10 == 10 ) /*0x10de*/
      {
        v5 += n2_1; /*0x189b*/
        _r_n_1 = "\r\n"; /*0x189e*/
        if ( n2_1 == 1 ) /*0x18a8*/
          v59 = 0; /*0x18aa*/
        else
          v59 = (char)v5[1] << 8; /*0x18b2*/
        n13 = n0xFFFF & (*v5 | (unsigned __int64)v59); /*0x18c6*/
        if ( n13 != 13 ) /*0x18ca*/
          v5 = v22; /*0x18ca*/
        v106 = v5; /*0x18ce*/
        goto LABEL_91; /*0x18d2*/
      }
      if ( n10 == 13 ) /*0x10e8*/
      {
        v5 += n2_1; /*0x1869*/
        v106 = v5; /*0x186c*/
        if ( n2_1 == 1 ) /*0x1873*/
          v42 = 0; /*0x1875*/
        else
          v42 = (char)v5[1] << 8; /*0x1880*/
LABEL_97:
        n13 = n0xFFFF & (*v5 | (unsigned __int64)v42); /*0x13b5*/
        if ( n13 == 10 ) /*0x13c9*/
        {
          _r_n_1 = "\r\n"; /*0x13cf*/
        }
        else
        {
          _r_n_1 = "\r"; /*0x1888*/
          v106 = v23; /*0x188f*/
          v5 = v23; /*0x1893*/
        }
        goto LABEL_91; /*0x13d6*/
      }
      if ( n10 != 37 ) /*0x10f2*/
      {
        LOWORD(v6) = v6 | 0x400; /*0x10f4*/
        _r_n_1 = (const char *)&n13; /*0x10f9*/
        v105 = v6; /*0x10fd*/
        goto LABEL_91; /*0x1101*/
      }
      v28 = a5; /*0x1106*/
      while ( 1 )
      {
        while ( 1 )
        {
          v29 = v5; /*0x1113*/
          v5 += n2_1; /*0x1116*/
          v106 = v5; /*0x1119*/
          v30 = n2_1 == 1 ? 0 : (char)v5[1] << 8;
          n13_1 = n0xFFFF & (v30 | (unsigned __int64)*v5); /*0x1136*/
          n13 = n13_1; /*0x1139*/
          if ( n13_1 > 0x2D ) /*0x1141*/
            break; /*0x1141*/
          switch ( n13_1 )
          {
            case 0x2DuLL:
              v6 |= 1uLL; /*0x11f4*/
              goto LABEL_76; /*0x11f8*/
            case 0uLL:
              v26 = 0; /*0x12b6*/
              v106 = v29; /*0x12b8*/
              v93 = 0; /*0x12bc*/
              v5 = v29; /*0x12c0*/
LABEL_78:
              v34 = v5; /*0x12c3*/
              v23 = v5; /*0x12c6*/
              if ( n13_1 > 0x67 ) /*0x12cd*/
              {
                v48 = n13_1 - 112; /*0x1500*/
                if ( v48 ) /*0x1504*/
                {
                  v49 = v48 - 2; /*0x150a*/
                  if ( v49 ) /*0x150e*/
                  {
                    v50 = v49 - 1; /*0x1514*/
                    if ( !v50 ) /*0x1518*/
                    {
LABEL_119:
                      LOWORD(v6) = v6 | 0x400; /*0x15cc*/
                      v105 = v6; /*0x15d1*/
LABEL_120:
                      _r_n_1 = (const char *)*v28; /*0x15da*/
                      a5 = v28 + 1; /*0x15e1*/
                      if ( !*v28 ) /*0x15da*/
                      {
                        LOWORD(v6) = v6 & 0xFBFF; /*0x15fa*/
                        _r_n_1 = "<null string>"; /*0x15ff*/
                        v105 = v6; /*0x1606*/
                      }
                      v26 &= -(__int64)((v6 & 0x800) != 0); /*0x1618*/
                      goto LABEL_90; /*0x161b*/
                    }
                    v51 = v50 - 1; /*0x151e*/
                    if ( v51 ) /*0x1522*/
                    {
                      n3 = v51 - 1; /*0x1524*/
                      if ( n3 ) /*0x1528*/
                      {
                        if ( n3 != 3 ) /*0x1532*/
                          goto LABEL_114; /*0x1532*/
                        goto LABEL_132; /*0x1532*/
                      }
                      goto LABEL_133; /*0x1528*/
                    }
                    a5 = v28 + 1; /*0x154d*/
                    if ( !*v28 ) /*0x1546*/
                    {
                      v24 = v91; /*0x1566*/
                      _r_n_1 = "<null time>"; /*0x156a*/
                      goto LABEL_90; /*0x1571*/
                    }
                    sub_1CD0( /*0x15b6*/
                      _r_n,
                      38,
                      0,
                      "%02d/%02d/%04d  %02d:%02d",
                      *((unsigned __int8 *)*v28 + 2),
                      *((unsigned __int8 *)*v28 + 3),
                      **v28,
                      *((unsigned __int8 *)*v28 + 4),
                      *((unsigned __int8 *)*v28 + 5));
                    _r_n_1 = _r_n; /*0x15bb*/
LABEL_118:
                    v24 = v91; /*0x15bf*/
                    v25 = 0; /*0x15c3*/
                    goto LABEL_90; /*0x15c7*/
                  }
                  n5 = *v28; /*0x1625*/
                  a5 = v28 + 1; /*0x162c*/
                  _r_n_1 = _r_n; /*0x1640*/
                  if ( (__int64)*v28 >= 0 ) /*0x1647*/
                  {
                    if ( (unsigned __int64)n5 <= 5 ) /*0x1675*/
                    {
                      _r_n_1 = off_8C70[(_QWORD)n5];// "Success" /*0x167e*/
                      goto LABEL_128; /*0x167e*/
                    }
                  }
                  else if ( ((unsigned __int64)n5 & 0x7FFFFFFFFFFFFFFFLL) - 1 <= 0x20 ) /*0x1661*/
                  {
                    _r_n_1 = off_8C70[(_QWORD)n5 + 5];// "Success" /*0x166a*/
LABEL_128:
                    if ( _r_n_1 != _r_n ) /*0x1689*/
                      goto LABEL_90; /*0x1689*/
                  }
                  sub_1CD0(_r_n, 38, 0, "%08X", (_DWORD)n5); /*0x16a6*/
                  goto LABEL_118; /*0x16ab*/
                }
                LOWORD(v6) = v6 & 0xFFC9 | 0x10; /*0x16b4*/
LABEL_131:
                LOWORD(v6) = v6 | 0x20; /*0x16b8*/
LABEL_132:
                LOWORD(v6) = v6 | 0x80; /*0x16bc*/
LABEL_133:
                if ( (v6 & 0x80u) == 0LL ) /*0x16c4*/
                  LOWORD(v6) = v6 & 0xBFFD | 0x4000; /*0x16ca*/
LABEL_135:
                if ( (v6 & 0x10) != 0 ) /*0x16d5*/
                  v54 = (__int64)*v28; /*0x16fa*/
                else
                  v54 = *(int *)v28; /*0x16dc*/
                a5 = v28 + 1; /*0x16e3*/
                n43 = (8 * v6) & 0x20; /*0x171d*/
                if ( (v6 & 2) != 0 ) /*0x172a*/
                  n43 = 43; /*0x172a*/
                n43_1 = n43; /*0x1734*/
                v56 = (v6 & 8) != 0; /*0x1738*/
                v107 = v56; /*0x173c*/
                if ( (v6 & 0x80u) != 0LL ) /*0x1746*/
                {
                  v56 = 0; /*0x1789*/
                  n16 = 16; /*0x178c*/
                  v107 = 0; /*0x1792*/
                  if ( (v6 & 0x10) != 0 || v54 >= 0 ) /*0x17a1*/
                    goto LABEL_151; /*0x17a1*/
                }
                else
                {
                  n16 = 10; /*0x1748*/
                  if ( (v6 & 8) != 0 ) /*0x1751*/
                  {
                    LOWORD(v6) = v6 & 0xFFDF; /*0x1753*/
                    v26 = 1; /*0x1757*/
                  }
                  if ( v54 < 0 && (v6 & 0x4000) == 0 ) /*0x1765*/
                  {
                    LOWORD(v6) = v6 | 2; /*0x1767*/
                    n43 = 45; /*0x176b*/
                    n43_1 = 45; /*0x176e*/
                    v54 = -v54; /*0x1772*/
LABEL_151:
                    v24 = sub_D94(_r_n, v54, n16) - (_QWORD)_r_n; /*0x17a5*/
                    v91 = v24; /*0x17bb*/
                    if ( !v54 ) /*0x17c2*/
                    {
                      v24 &= -(__int64)(v26 != 0); /*0x17cd*/
                      v91 = v24; /*0x17d0*/
                    }
                    _r_n_1 = &_r_n[v24]; /*0x17e2*/
                    v58 = 3 - v24 % 3; /*0x17fd*/
                    if ( !(v24 % 3) ) /*0x17fa*/
                      v58 = 0; /*0x1803*/
                    v98 = v58; /*0x1807*/
                    if ( v56 && v24 ) /*0x1813*/
                    {
                      v24 += (v24 - 1) / 3; /*0x1822*/
                      v58 = v98; /*0x1825*/
                      v91 = v24; /*0x1829*/
                    }
                    if ( n43 ) /*0x1830*/
                    {
                      v91 = ++v24; /*0x1835*/
                      ++v26; /*0x1839*/
                    }
                    LOWORD(v6) = v6 | 0x1000; /*0x183c*/
                    v25 = 1; /*0x1841*/
                    v105 = v6; /*0x1847*/
                    if ( (v6 & 0xA21) == 0x220 ) /*0x1856*/
                    {
                      v26 = (unsigned __int64)v96; /*0x185c*/
                      v98 = v58; /*0x1860*/
                    }
                    goto LABEL_90; /*0x1864*/
                  }
                  if ( (v6 & 0x4010) != 0x4000 ) /*0x1785*/
                    goto LABEL_151; /*0x1785*/
                }
                v54 = (unsigned int)v54; /*0x17a3*/
                goto LABEL_151; /*0x17a3*/
              }
              if ( n13_1 == 103 ) /*0x12d3*/
              {
                v44 = (unsigned __int8 *)*v28; /*0x142a*/
                a5 = v28 + 1; /*0x1431*/
                if ( *v28 ) /*0x142a*/
                {
                  v45 = sub_2B6C(v44, v5, v5); /*0x1466*/
                  v46 = (unsigned __int16)sub_2B34(v44 + 4); /*0x1472*/
                  v47 = sub_2B34(v44 + 6); /*0x1476*/
                  sub_1CD0( /*0x14e6*/
                    _r_n,
                    38,
                    0,
                    "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
                    v45,
                    v46,
                    v47,
                    v44[8],
                    v44[9],
                    v44[10],
                    v44[11],
                    v44[12],
                    v44[13],
                    v44[14],
                    v44[15]);
                  v24 = v91; /*0x14eb*/
                  _r_n_1 = _r_n; /*0x14ef*/
                  v25 = 0; /*0x14f3*/
                  v5 = v106; /*0x14f7*/
                }
                else
                {
                  _r_n_1 = "<null guid>"; /*0x144a*/
                }
                v26 = v93; /*0x1451*/
                goto LABEL_90; /*0x1455*/
              }
              v35 = n13_1 - 10; /*0x12d9*/
              if ( !v35 ) /*0x12dd*/
              {
                v5 += n2_1; /*0x13db*/
                _r_n_1 = "\r\n"; /*0x13de*/
                v106 = v5; /*0x13e5*/
                if ( n2_1 == 1 ) /*0x13ed*/
                  v43 = 0; /*0x13ef*/
                else
                  v43 = (char)v5[1] << 8; /*0x13f7*/
                v19 = v87; /*0x13fa*/
                n13 = n0xFFFF & (*v5 | (unsigned __int64)v43); /*0x140b*/
                if ( n13 != 13 ) /*0x1413*/
                {
                  v5 = v34; /*0x1419*/
                  v106 = v34; /*0x141c*/
                }
                goto LABEL_91; /*0x1420*/
              }
              v36 = v35 - 3; /*0x12e3*/
              if ( !v36 ) /*0x12e7*/
              {
                v5 += n2_1; /*0x1399*/
                v106 = v5; /*0x139c*/
                if ( n2_1 == 1 ) /*0x13a4*/
                  v42 = 0; /*0x13a6*/
                else
                  v42 = (char)v5[1] << 8; /*0x13ae*/
                v19 = v87; /*0x13b1*/
                goto LABEL_97; /*0x13b1*/
              }
              v37 = v36 - 70; /*0x12ed*/
              if ( !v37 ) /*0x12f1*/
                goto LABEL_119; /*0x12f1*/
              v38 = v37 - 5; /*0x12f7*/
              if ( !v38 ) /*0x12fb*/
                goto LABEL_131; /*0x12fb*/
              v39 = v38 - 9; /*0x1301*/
              if ( !v39 ) /*0x1305*/
                goto LABEL_120; /*0x1305*/
              v40 = v39 - 2; /*0x130b*/
              if ( !v40 ) /*0x130f*/
              {
                a5 = v28 + 1; /*0x132d*/
                v99 = *(unsigned __int16 *)v28; /*0x1342*/
                _r_n_1 = (const char *)&v99; /*0x1346*/
                goto LABEL_89; /*0x1346*/
              }
              if ( v40 == 1 ) /*0x1315*/
                goto LABEL_135; /*0x1315*/
LABEL_114:
              _r_n_1 = (const char *)&n13; /*0x1538*/
LABEL_89:
              LOWORD(v6) = v6 | 0x400; /*0x134a*/
              v105 = v6; /*0x134f*/
LABEL_90:
              v19 = v87; /*0x1353*/
LABEL_91:
              v41 = (v6 & 0x400) != 0 ? 0xFFFFLL : 255LL;
              if ( (v6 & 0x1000) != 0 ) /*0x1387*/
              {
                v104 = ((unsigned __int128)-(__int128)(v6 & 0x400) >> 64) - 1; /*0x1390*/
              }
              else
              {
                v24 = 0; /*0x18d7*/
                for ( i = _r_n_1; ; i += 1 - ((unsigned __int128)-(__int128)(v6 & 0x400) >> 64) ) /*0x18da*/
                {
                  if ( v24 >= v26 ) /*0x18e0*/
                  {
                    v104 = 1 - ((unsigned __int128)-(__int128)(v6 & 0x400) >> 64); /*0x18e2*/
                    if ( (v6 & 0x800) != 0 ) /*0x18eb*/
                      break; /*0x18eb*/
                  }
                  v104 = 1 - ((unsigned __int128)-(__int128)(v6 & 0x400) >> 64); /*0x18ff*/
                  if ( ((*(unsigned __int8 *)i | (unsigned __int64)(i[1] << 8)) & v41) == 0 ) /*0x1906*/
                    break; /*0x1906*/
                  ++v24; /*0x1908*/
                }
                v91 = v24; /*0x1910*/
              }
              if ( v26 < v24 ) /*0x191a*/
                v26 = v24; /*0x191a*/
              n512 = v6 & 0x201; /*0x191e*/
              v94 = v26; /*0x1925*/
              n512_1 = n512; /*0x1929*/
              if ( n512 != 512 || (v87 = n2 * ((_QWORD)v96 - v26) + v19, (v6 & 0x2000) != 0) ) /*0x1953*/
              {
                v62 = v89; /*0x197a*/
              }
              else
              {
                v62 = v89; /*0x1955*/
                if ( v8 ) /*0x195c*/
                {
                  v63 = sub_D60(v8, v89, (int)v96 - (int)v26, 32, n2); /*0x196c*/
                  v24 = v91; /*0x1971*/
                  v8 = v63; /*0x1975*/
                }
              }
              v64 = v87; /*0x197e*/
              if ( v25 ) /*0x1985*/
              {
                if ( !n43_1 || (v64 = n2 + v87, v88 = v64, (v6 & 0x2000) != 0) ) /*0x19a1*/
                {
                  v65 = v89; /*0x19de*/
                }
                else
                {
                  v65 = v89; /*0x19a3*/
                  if ( v8 ) /*0x19aa*/
                  {
                    for ( j = 0; j < 1; ++j ) /*0x19b0*/
                    {
                      if ( v8 >= v89 ) /*0x19b5*/
                        break; /*0x19b5*/
                      *(_BYTE *)v8 = n43_1; /*0x19b7*/
                      if ( n2 != 1 ) /*0x19bf*/
                        *(_BYTE *)(v8 + 1) = 0; /*0x19c8*/
                      v8 += n2; /*0x19cc*/
                    }
                    v64 = v88; /*0x19d8*/
                  }
                }
                n2_3 = n2; /*0x19e2*/
                v68 = v26 - v24; /*0x19e9*/
                v87 = n2 * (v26 - v24) + v64; /*0x19f9*/
                v69 = v6 & 0x2000; /*0x19fd*/
                if ( (v6 & 0x2000) == 0 && v8 ) /*0x1a08*/
                  v8 = sub_D60(v8, v65, v68, (int)v69 + 48, n2); /*0x1a1e*/
                goto LABEL_199; /*0x1a1e*/
              }
              n2_3 = n2; /*0x1b6a*/
              v79 = v26 - v24; /*0x1b71*/
              v80 = n2 * (v26 - v24) + v87; /*0x1b7e*/
              v87 = v80; /*0x1b81*/
              v69 = v6 & 0x2000; /*0x1b85*/
              if ( (v6 & 0x2000) == 0 && v8 ) /*0x1b90*/
              {
                v81 = sub_D60(v8, v62, v79, (int)v69 + 32, n2); /*0x1b9e*/
                v80 = v87; /*0x1ba3*/
                v8 = v81; /*0x1ba7*/
              }
              if ( !n43_1 || (v87 = n2_3 + v80, (v6 & 0x2000) != 0) ) /*0x1bbf*/
              {
LABEL_199:
                v70 = v89; /*0x1a21*/
              }
              else
              {
                v70 = v89; /*0x1bc5*/
                if ( v8 ) /*0x1bcc*/
                {
                  for ( k = 0; k < 1; ++k ) /*0x1bd5*/
                  {
                    if ( v8 >= v89 ) /*0x1bda*/
                      break; /*0x1bda*/
                    *(_BYTE *)v8 = n43_1; /*0x1be0*/
                    if ( n2_3 != 1 ) /*0x1be8*/
                      *(_BYTE *)(v8 + 1) = 0; /*0x1bf1*/
                    v8 += n2_3; /*0x1bf5*/
                  }
                }
              }
              v71 = n43_1 != 0; /*0x1a30*/
              if ( v71 < v91 ) /*0x1a36*/
              {
                v72 = v87; /*0x1a40*/
                v73 = v98; /*0x1a44*/
                do /*0x1af2*/
                {
                  v72 += n2_3; /*0x1a53*/
                  v74 = v41 & *(_WORD *)_r_n_1; /*0x1a60*/
                  if ( !v69 && v8 ) /*0x1a6b*/
                  {
                    v75 = v89; /*0x1a6d*/
                    for ( m = 0; m < 1; ++m ) /*0x1a71*/
                    {
                      if ( v8 >= v75 ) /*0x1a77*/
                        break; /*0x1a77*/
                      *(_BYTE *)v8 = v74; /*0x1a79*/
                      if ( n2_3 != 1 ) /*0x1a81*/
                      {
                        *(_BYTE *)(v8 + 1) = HIBYTE(v74); /*0x1a8a*/
                        v75 = v89; /*0x1a8e*/
                      }
                      v8 += n2_3; /*0x1a92*/
                    }
                    v70 = v89; /*0x1a9e*/
                  }
                  _r_n_1 += v104; /*0x1aa2*/
                  ++v71; /*0x1aa5*/
                  if ( v107 && ++v73 == 3 ) /*0x1ab4*/
                  {
                    v73 = 0; /*0x1ab6*/
                    if ( ++v71 >= v91 ) /*0x1abe*/
                      break; /*0x1abe*/
                    v72 += n2_3; /*0x1ac0*/
                    if ( !v69 && v8 ) /*0x1acb*/
                    {
                      for ( n = 0; n < 1; ++n ) /*0x1acd*/
                      {
                        if ( v8 >= v70 ) /*0x1ad2*/
                          break; /*0x1ad2*/
                        *(_BYTE *)v8 = 44; /*0x1ad4*/
                        if ( n2_3 != 1 ) /*0x1add*/
                          *(_BYTE *)(v8 + 1) = 0; /*0x1adf*/
                        v8 += n2_3; /*0x1ae3*/
                      }
                    }
                  }
                }
                while ( v71 < v91 ); /*0x1af2*/
                LOWORD(v6) = v105; /*0x1af8*/
                v5 = v106; /*0x1afc*/
                v87 = v72; /*0x1b00*/
                n512 = n512_1; /*0x1b04*/
              }
              v19 = v87; /*0x1b08*/
              if ( n512 != 513 || (v19 = n2_3 * ((_QWORD)v96 - v94) + v87, v87 = v19, v69) ) /*0x1b32*/
              {
                v18 = v89; /*0x1c06*/
              }
              else
              {
                v18 = v89; /*0x1b38*/
                if ( v8 ) /*0x1b3f*/
                {
                  v78 = sub_D60(v8, v89, (int)v96 - (int)v94, 32, n2_3); /*0x1b59*/
                  v19 = v87; /*0x1b5e*/
                  v8 = v78; /*0x1b62*/
                }
              }
              n2_1 = n2_2; /*0x1c0a*/
              v5 += n2_2; /*0x1c0e*/
              v106 = v5; /*0x1c11*/
              if ( n2_2 == 1 ) /*0x1c19*/
                v83 = 0; /*0x1c1b*/
              else
                v83 = (char)v5[1] << 8; /*0x1c23*/
              v21 = v83; /*0x1c2a*/
              v20 = *v5; /*0x1c2d*/
              goto LABEL_243; /*0x1c2d*/
            case 0x20uLL:
              v6 |= 4uLL; /*0x11eb*/
              goto LABEL_76; /*0x11ef*/
          }
          if ( n13_1 != 42 ) /*0x1167*/
          {
            if ( n13_1 == 43 ) /*0x116d*/
            {
              v6 |= 2uLL; /*0x1182*/
            }
            else
            {
              if ( n13_1 != 44 ) /*0x1173*/
                goto LABEL_78; /*0x1173*/
              v6 |= 8uLL; /*0x1179*/
            }
            goto LABEL_76; /*0x117d*/
          }
          if ( (v6 & 0x800) != 0 ) /*0x118e*/
          {
            v26 = (unsigned __int64)*v28++; /*0x11c7*/
            a5 = v28; /*0x11ce*/
            v93 = v26; /*0x11e2*/
          }
          else
          {
            v6 |= 0x200uLL; /*0x1190*/
            v105 = v6; /*0x1195*/
            v32 = *v28++; /*0x119e*/
            a5 = v28; /*0x11a5*/
            v96 = v32; /*0x11b9*/
          }
        }
        if ( n13_1 == 46 ) /*0x1201*/
        {
          v6 |= 0x800uLL; /*0x12aa*/
          goto LABEL_76; /*0x12aa*/
        }
        if ( n13_1 == 48 ) /*0x120b*/
          break; /*0x120b*/
        if ( n13_1 <= 0x30 ) /*0x120d*/
          goto LABEL_78; /*0x120d*/
        if ( n13_1 <= 0x39 )
        {
LABEL_66:
          v24 = 0; /*0x123c*/
          do
          {
            if ( n13_1 > 0x39 ) /*0x124d*/
              break; /*0x124d*/
            v5 += n2_1; /*0x1253*/
            v24 = n13_1 + 2 * (5 * v24 - 24); /*0x125a*/
            v33 = n2_1 == 1 ? 0 : (char)v5[1] << 8;
            n13_1 = n0xFFFF & (v33 | (unsigned __int64)*v5); /*0x1277*/
          }
          while ( n13_1 >= 0x30 );
          v91 = v24; /*0x1280*/
          v5 -= n2_1; /*0x1284*/
          if ( (v6 & 0x800) != 0 ) /*0x128a*/
          {
            v26 = v24; /*0x129e*/
            v93 = v24; /*0x12a1*/
          }
          else
          {
            v6 |= 0x200uLL; /*0x128c*/
            v96 = (unsigned __int16 *)v24; /*0x1291*/
            v105 = v6; /*0x1295*/
          }
        }
        else
        {
          if ( ((n13_1 - 76) & 0xFFFFFFFFFFFFFFDFuLL) != 0 ) /*0x1223*/
            goto LABEL_78; /*0x1223*/
          v6 |= 0x10uLL; /*0x1229*/
LABEL_76:
          v105 = v6; /*0x12ad*/
        }
      }
      if ( (v6 & 0x800) == 0 ) /*0x1232*/
      {
        v6 |= 0x20uLL; /*0x1234*/
        v105 = v6; /*0x1238*/
      }
      goto LABEL_66; /*0x1238*/
    }
  }
  if ( (v6 & 0x2000) != 0 ) /*0x1c49*/
    return v19 / n2; /*0x1c53*/
  if ( !v8 ) /*0x1c64*/
    sub_788("e:\\hs\\MdePkg\\Library\\BasePrintLib\\PrintLibInternal.c", 1216, "Buffer != ((void *) 0)"); /*0x1c79*/
  v85 = (_BYTE *)v8; /*0x1c81*/
  for ( ii = 0; ii < 1; ++ii ) /*0x1c84*/
  {
    if ( (unsigned __int64)v85 >= n2 + v18 ) /*0x1c8d*/
      break; /*0x1c8d*/
    *v85 = 0; /*0x1c8f*/
    if ( n2 != 1 ) /*0x1c96*/
      v85[1] = 0; /*0x1c98*/
    v85 += n2; /*0x1c9c*/
  }
  return (__int64)(v8 - v101) / n2; /*0x1cbc*/
}