
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> >
   >::get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char,
   std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, tm*, char const*, char const*)
   const */

void std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::get
               (undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,
               undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,
               ctype *param_10,ctype *param_11)

{
  undefined1 uVar1;
  code *pcVar2;
  int *piVar3;
  int *piVar4;
  ctype cVar5;
  ctype cVar6;
  ctype *pcVar7;
  ctype *pcVar8;
  byte *pbVar9;
  uint uVar10;
  int iVar11;
  undefined1 uVar12;
  byte bVar13;
  bool bVar14;
  bool bVar15;
  undefined1 *puVar16;
  int iVar17;
  uint uVar18;
  char cVar19;
  char cVar20;
  int aiStackY_b0 [9];
  undefined1 auStack_7c [8];
  int local_74;
  uint local_70;
  ctype local_6c [4];
  undefined **local_68;
  int local_64 [4];
  byte local_54 [4];
  ctype local_50 [6];
  bool local_4a;
  ctype local_49;
  int local_48;
  undefined **local_44;
  int local_40;
  locale *local_3c;
  undefined **local_38;
  int local_34 [5];
  ctype local_20 [16];
  
  local_68 = &_GLOBAL_OFFSET_TABLE_;
  local_70 = param_4;
  local_74 = param_5;
  local_48 = param_6;
  local_3c = (locale *)(param_7 + 0x6c);
  pcVar7 = use_facet<std::ctype<char>>(local_3c);
  puVar16 = auStack_7c;
  *param_8 = 0;
  if (param_10 != param_11) {
    local_4a = local_48 == -1;
    local_44 = local_68 + -0x4b990;
    local_38 = local_68 + -0xbcb5c;
    puVar16 = auStack_7c;
    do {
      cVar19 = *(int *)(puVar16 + 0xc) == -1;
      bVar14 = param_3 != (int *)0x0 && (bool)cVar19;
      puVar16[0x10] = bVar14;
      if (bVar14) {
        if ((uint)param_3[2] < (uint)param_3[3]) {
          puVar16[0x10] = 0;
        }
        else {
          puVar16[0x28] = cVar19;
          iVar17 = *param_3;
          *(int **)(puVar16 + -0x10) = param_3;
          pcVar2 = *(code **)(iVar17 + 0x24);
          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;
          iVar17 = (*pcVar2)();
          uVar12 = puVar16[0x10];
          cVar19 = puVar16[0x28];
          if (iVar17 == -1) {
            param_3 = (int *)0x0;
          }
          else {
            uVar12 = 0;
          }
          puVar16[0x10] = uVar12;
        }
      }
      else {
        puVar16[0x10] = cVar19;
      }
      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {
        cVar20 = puVar16[0x32];
LAB_0027bd1f:
        if (cVar20 == puVar16[0x10]) {
LAB_0027c0a4:
          **(undefined4 **)(puVar16 + 0x9c) = 6;
          break;
        }
      }
      else {
        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {
          puVar16[0x2c] = cVar19;
          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];
          piVar3 = *(int **)(puVar16 + 8);
          iVar17 = *piVar3;
          *(int **)(puVar16 + -0x10) = piVar3;
          pcVar2 = *(code **)(iVar17 + 0x24);
          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;
          iVar17 = (*pcVar2)();
          cVar20 = puVar16[0x28];
          piVar4 = (int *)0x0;
          if (iVar17 != -1) {
            cVar20 = '\0';
            piVar4 = piVar3;
          }
          cVar19 = puVar16[0x2c];
          *(int **)(puVar16 + 8) = piVar4;
          goto LAB_0027bd1f;
        }
        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;
      }
      cVar6 = *param_10;
      cVar5 = pcVar7[(byte)cVar6 + 0x11d];
      *(uint *)(puVar16 + 0x10) = (uint)(byte)cVar6;
      if (cVar5 == (ctype)0x0) {
        pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);
        cVar5 = cVar6;
        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {
          puVar16[0x28] = cVar19;
          *(undefined4 *)(puVar16 + -8) = 0;
          *(int *)(puVar16 + -0xc) = (int)(char)cVar6;
          *(ctype **)(puVar16 + -0x10) = pcVar7;
          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;
          cVar5 = (ctype)(*pcVar2)();
          cVar19 = puVar16[0x28];
        }
        if (cVar5 != (ctype)0x0) {
          pcVar7[*(int *)(puVar16 + 0x10) + 0x11d] = cVar5;
          goto LAB_0027bd69;
        }
LAB_0027bc28:
        iVar17 = *(int *)(pcVar7 + 0x18);
        if ((*(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2) & 0x20) != 0) {
          pcVar8 = param_10 + 1;
          if (*(ctype **)(puVar16 + 0xa8) == pcVar8) {
            pcVar8 = *(ctype **)(puVar16 + 0xa8);
          }
          else if ((*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0) {
            do {
              pcVar8 = pcVar8 + 1;
              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;
            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);
          }
          *(ctype **)(puVar16 + 0xa4) = pcVar8;
          uVar18 = *(uint *)(puVar16 + 0xc);
          *(ctype **)(puVar16 + 0x10) = pcVar7;
          cVar19 = uVar18 == 0xffffffff;
          bVar15 = param_3 != (int *)0x0 && (bool)cVar19;
          bVar14 = (bool)cVar19;
          if (bVar15) goto LAB_0027bfff;
LAB_0027bfa2:
          bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];
          if (bVar13 != 0) goto LAB_0027c01c;
LAB_0027bfb1:
          cVar20 = puVar16[0x32];
LAB_0027bfb6:
          if ((bool)cVar20 != bVar14) {
            do {
              uVar10 = uVar18;
              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {
LAB_0027bfc8:
                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)
                    & 0x20) == 0) break;
                pbVar9 = (byte *)param_3[2];
                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;
                iVar17 = *param_3;
                *(int **)(puVar16 + -0x10) = param_3;
                pcVar2 = *(code **)(iVar17 + 0x28);
                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;
                (*pcVar2)();
              }
              else {
                pbVar9 = (byte *)param_3[2];
                if ((byte *)param_3[3] <= pbVar9) {
                  iVar17 = *param_3;
                  *(int **)(puVar16 + -0x10) = param_3;
                  pcVar2 = *(code **)(iVar17 + 0x24);
                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;
                  uVar10 = (*pcVar2)();
                  if (uVar10 == 0xffffffff) {
                    param_3 = (int *)0x0;
                  }
                  goto LAB_0027bfc8;
                }
                pcVar7 = *(ctype **)(puVar16 + 0x10);
                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {
                  param_10 = *(ctype **)(puVar16 + 0xa4);
                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;
                  goto LAB_0027bccc;
                }
LAB_0027bfe5:
                param_3[2] = (int)(pbVar9 + 1);
              }
              uVar18 = 0xffffffff;
              cVar19 = true;
              bVar15 = param_3 != (int *)0x0;
              bVar14 = (bool)cVar19;
              if (!bVar15) goto LAB_0027bfa2;
LAB_0027bfff:
              if ((uint)param_3[3] <= (uint)param_3[2]) {
                puVar16[0xc] = cVar19;
                iVar17 = *param_3;
                *(int **)(puVar16 + -0x10) = param_3;
                pcVar2 = *(code **)(iVar17 + 0x24);
                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;
                iVar17 = (*pcVar2)();
                bVar14 = false;
                if (iVar17 == -1) {
                  param_3 = (int *)0x0;
                  bVar14 = bVar15;
                }
                cVar19 = puVar16[0xc];
                goto LAB_0027bfa2;
              }
              bVar14 = false;
              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];
              if (bVar13 == 0) goto LAB_0027bfb1;
LAB_0027c01c:
              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))
              goto LAB_0027c2c0;
              if (bVar14 == false) break;
            } while( true );
          }
          *(uint *)(puVar16 + 0xc) = uVar18;
          pcVar7 = *(ctype **)(puVar16 + 0x10);
          param_10 = *(ctype **)(puVar16 + 0xa4);
          goto LAB_0027bccc;
        }
        if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {
          cVar20 = puVar16[0xc];
        }
        else if ((char *)param_3[2] < (char *)param_3[3]) {
          cVar20 = *(char *)param_3[2];
        }
        else {
          puVar16[0x10] = cVar19;
          iVar17 = *param_3;
          *(int **)(puVar16 + -0x10) = param_3;
          pcVar2 = *(code **)(iVar17 + 0x24);
          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;
          iVar11 = (*pcVar2)();
          cVar19 = puVar16[0x10];
          iVar17 = -1;
          if (iVar11 != -1) {
            iVar17 = iVar11;
          }
          cVar20 = (char)iVar17;
          if (iVar11 == -1) {
            param_3 = (int *)0x0;
          }
        }
        iVar17 = *(int *)pcVar7;
        puVar16[0x10] = cVar19;
        *(int *)(puVar16 + -0xc) = (int)cVar20;
        *(ctype **)(puVar16 + -0x10) = pcVar7;
        pcVar2 = *(code **)(iVar17 + 0x10);
        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;
        cVar19 = (*pcVar2)();
        iVar17 = *(int *)pcVar7;
        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;
        *(ctype **)(puVar16 + -0x10) = pcVar7;
        pcVar2 = *(code **)(iVar17 + 0x10);
        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;
        cVar20 = (*pcVar2)();
        if (cVar20 != cVar19) {
          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {
            cVar19 = puVar16[0xc];
          }
          else if ((char *)param_3[2] < (char *)param_3[3]) {
            cVar19 = *(char *)param_3[2];
          }
          else {
            iVar17 = *param_3;
            *(int **)(puVar16 + -0x10) = param_3;
            pcVar2 = *(code **)(iVar17 + 0x24);
            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;
            iVar11 = (*pcVar2)();
            iVar17 = -1;
            if (iVar11 != -1) {
              iVar17 = iVar11;
            }
            cVar19 = (char)iVar17;
            if (iVar11 == -1) {
              param_3 = (int *)0x0;
            }
          }
          iVar17 = *(int *)pcVar7;
          *(int *)(puVar16 + -0xc) = (int)cVar19;
          *(ctype **)(puVar16 + -0x10) = pcVar7;
          pcVar2 = *(code **)(iVar17 + 8);
          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;
          cVar19 = (*pcVar2)();
          iVar17 = *(int *)pcVar7;
          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;
          *(ctype **)(puVar16 + -0x10) = pcVar7;
          pcVar2 = *(code **)(iVar17 + 8);
          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;
          cVar20 = (*pcVar2)();
          if (cVar20 != cVar19) {
LAB_0027c4c0:
            **(undefined4 **)(puVar16 + 0x9c) = 4;
            break;
          }
        }
        if ((uint)param_3[2] < (uint)param_3[3]) {
          param_3[2] = param_3[2] + 1;
        }
        else {
          iVar17 = *param_3;
          *(int **)(puVar16 + -0x10) = param_3;
          pcVar2 = *(code **)(iVar17 + 0x28);
          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;
          (*pcVar2)();
        }
        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;
        param_10 = param_10 + 1;
LAB_0027bccc:
        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;
      }
      else {
LAB_0027bd69:
        if (cVar5 != (ctype)0x25) goto LAB_0027bc28;
        *(ctype **)(puVar16 + 0x28) = param_10 + 1;
        if (*(ctype **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;
        cVar6 = param_10[1];
        *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar6;
        cVar5 = pcVar7[(byte)cVar6 + 0x11d];
        *(ctype *)(puVar16 + 0x10) = cVar5;
        uVar12 = 0x25;
        if (cVar5 == (ctype)0x0) {
          pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);
          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {
            puVar16[0x10] = 0x25;
            *(undefined4 *)(puVar16 + -8) = 0;
            *(int *)(puVar16 + -0xc) = (int)(char)cVar6;
            *(ctype **)(puVar16 + -0x10) = pcVar7;
            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;
            cVar6 = (ctype)(*pcVar2)();
            uVar12 = puVar16[0x10];
          }
          if (cVar6 != (ctype)0x0) {
            *(ctype *)(puVar16 + 0x10) = cVar6;
            pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;
            goto LAB_0027bdcc;
          }
          puVar16[0x10] = 0;
          iVar17 = 0;
          *(undefined4 *)(puVar16 + 0x3c) = 0;
          cVar6 = (ctype)0x0;
        }
        else {
LAB_0027bdcc:
          cVar6 = *(ctype *)(puVar16 + 0x10);
          if ((cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f)) {
            *(ctype **)(puVar16 + 0x28) = param_10 + 2;
            if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;
            cVar5 = param_10[2];
            *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;
            cVar6 = pcVar7[(byte)cVar5 + 0x11d];
            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];
            if (cVar6 == (ctype)0x0) {
              iVar17 = (int)(char)cVar5;
              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);
              cVar6 = cVar5;
              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {
                puVar16[0x33] = uVar12;
                *(undefined4 *)(puVar16 + -8) = 0;
                *(int *)(puVar16 + -0xc) = iVar17;
                *(ctype **)(puVar16 + -0x10) = pcVar7;
                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;
                cVar6 = (ctype)(*pcVar2)();
                uVar12 = puVar16[0x33];
                iVar17 = (int)(char)cVar6;
              }
              if (cVar6 != (ctype)0x0) {
                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;
              }
            }
            else {
              iVar17 = (int)(char)cVar6;
            }
          }
          else {
            *(undefined4 *)(puVar16 + 0x3c) = 0;
            iVar17 = (int)(char)cVar6;
            puVar16[0x10] = 0;
          }
        }
        puVar16[0x33] = uVar12;
        *(ctype *)(puVar16 + 0x2c) = cVar6;
        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);
        if (pcVar2 == *(code **)(puVar16 + 0x38)) {
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);
          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;
          pcVar8 = use_facet<std::ctype<char>>(*(locale **)(puVar16 + -0x10));
          uVar12 = puVar16[0x2c];
          uVar1 = puVar16[0x33];
          **(undefined4 **)(puVar16 + 0x9c) = 0;
          if (pcVar8[0x1c] == (ctype)0x0) {
            puVar16[0x33] = uVar1;
            puVar16[0x2c] = uVar12;
            *(ctype **)(puVar16 + -0x10) = pcVar8;
            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;
            ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10));
            uVar12 = puVar16[0x2c];
            cVar6 = *(ctype *)(puVar16 + 0x33);
            pcVar2 = *(code **)(*(int *)pcVar8 + 0x18);
            if (pcVar2 != *(code **)(puVar16 + 0x44)) {
              *(undefined4 *)(puVar16 + -0xc) = 0x25;
              *(ctype **)(puVar16 + -0x10) = pcVar8;
              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;
              cVar6 = (ctype)(*pcVar2)();
              uVar12 = puVar16[0x2c];
            }
          }
          else {
            cVar6 = pcVar8[0x42];
          }
          *(ctype *)(puVar16 + 0x5c) = cVar6;
          if (puVar16[0x10] == '\0') {
            puVar16[0x5d] = uVar12;
            puVar16[0x5e] = 0;
          }
          else {
            puVar16[0x5e] = uVar12;
            puVar16[0x5f] = 0;
            puVar16[0x5d] = puVar16[0x10];
          }
          *(int **)(puVar16 + 0x18) = param_3;
          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);
          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);
          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);
          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);
          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);
          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);
          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);
          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);
          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);
          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);
          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);
          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;
          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;
          _M_extract_via_format();
          iVar17 = *(int *)(puVar16 + 0x4c);
          param_3 = *(int **)(puVar16 + 0x48);
          *(int *)(puVar16 + 0x1c) = iVar17;
          *(int *)(puVar16 + 0xc) = iVar17;
          *(int **)(puVar16 + 0x18) = param_3;
          bVar14 = param_3 != (int *)0x0 && iVar17 == -1;
          cVar19 = iVar17 == -1;
          if ((bVar14) && (cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {
            puVar16[0x10] = bVar14;
            iVar17 = *param_3;
            *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);
            pcVar2 = *(code **)(iVar17 + 0x24);
            *(undefined4 *)(puVar16 + -0x14) = 0x27c37e;
            iVar17 = (*pcVar2)();
            if (iVar17 == -1) {
              param_3 = (int *)0x0;
              cVar19 = puVar16[0x10];
            }
          }
          if ((*(int *)(puVar16 + 8) == 0) || (puVar16[0x32] == '\0')) {
            cVar20 = puVar16[0x32];
          }
          else {
            cVar20 = '\0';
            if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {
              iVar17 = **(int **)(puVar16 + 8);
              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);
              pcVar2 = *(code **)(iVar17 + 0x24);
              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;
              iVar17 = (*pcVar2)();
              cVar20 = iVar17 == -1;
            }
          }
          if (cVar20 == cVar19) {
            **(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2;
          }
        }
        else {
          *(int **)(puVar16 + 0x88) = param_3;
          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);
          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);
          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);
          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);
          *(int *)(puVar16 + -0xc) = iVar17;
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);
          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);
          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);
          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);
          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);
          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);
          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);
          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);
          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;
          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;
          (*pcVar2)();
          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);
          param_3 = *(int **)(puVar16 + 0x84);
          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);
          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);
          puVar16 = puVar16 + -4;
        }
        param_10 = (ctype *)(*(int *)(puVar16 + 0x28) + 1);
        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;
      }
    } while (**(int **)(puVar16 + 0x9c) == 0);
  }
  piVar3 = *(int **)(puVar16 + 0x80);
  iVar17 = *(int *)(puVar16 + 0xc);
  *piVar3 = (int)param_3;
  piVar3[1] = iVar17;
  return;
LAB_0027c2c0:
  puVar16[0x28] = cVar19;
  puVar16[0xc] = bVar13;
  piVar3 = *(int **)(puVar16 + 8);
  iVar17 = *piVar3;
  *(int **)(puVar16 + -0x10) = piVar3;
  pcVar2 = *(code **)(iVar17 + 0x24);
  *(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;
  iVar17 = (*pcVar2)();
  cVar20 = puVar16[0xc];
  piVar4 = (int *)0x0;
  if (iVar17 != -1) {
    cVar20 = '\0';
    piVar4 = piVar3;
  }
  cVar19 = puVar16[0x28];
  *(int **)(puVar16 + 8) = piVar4;
  goto LAB_0027bfb6;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_0027bb80(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,
                 undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,
                 byte *param_10,byte *param_11)

{
  undefined4 *puVar1;
  code *pcVar2;
  int *piVar3;
  undefined1 *puVar4;
  byte bVar5;
  undefined1 uVar6;
  byte bVar7;
  int *piVar8;
  int *piVar9;
  uint uVar10;
  int iVar11;
  undefined1 uVar12;
  bool bVar13;
  bool bVar14;
  undefined1 *puVar15;
  undefined1 *puVar16;
  int iVar17;
  byte *pbVar18;
  uint uVar19;
  char cVar20;
  char cVar21;
  int aiStackY_b0 [9];
  undefined1 auStack_7c [4];
  int local_78 [2];
  uint local_70;
  uint local_6c;
  undefined **local_68;
  int local_64 [4];
  byte local_54 [4];
  undefined4 local_50;
  bool local_4a [2];
  int local_48;
  undefined **local_44;
  int local_40 [2];
  undefined **local_38;
  int local_34 [5];
  undefined1 local_20 [16];
  
  local_68 = &__DT_PLTGOT;
  local_70 = param_4;
  local_78[1] = param_5;
  local_48 = param_6;
  local_40[1] = param_7 + 0x6c;
  piVar8 = (int *)FUN_00212050(local_40[1]);
  *param_8 = 0;
  puVar16 = auStack_7c;
  if (param_10 != param_11) {
    local_4a[0] = local_48 == -1;
    local_44 = local_68 + -0x4b990;
    local_38 = local_68 + -0xbcb5c;
    puVar16 = auStack_7c;
    do {
      cVar20 = *(int *)(puVar16 + 0xc) == -1;
      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;
      puVar16[0x10] = bVar13;
      if (bVar13) {
        if ((uint)param_3[2] < (uint)param_3[3]) {
          puVar16[0x10] = 0;
        }
        else {
          puVar16[0x28] = cVar20;
          iVar17 = *param_3;
          *(int **)(puVar16 + -0x10) = param_3;
          pcVar2 = *(code **)(iVar17 + 0x24);
          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;
          iVar17 = (*pcVar2)();
          uVar12 = puVar16[0x10];
          cVar20 = puVar16[0x28];
          if (iVar17 == -1) {
            param_3 = (int *)0x0;
          }
          else {
            uVar12 = 0;
          }
          puVar16[0x10] = uVar12;
        }
      }
      else {
        puVar16[0x10] = cVar20;
      }
      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {
        cVar21 = puVar16[0x32];
LAB_0027bd1f:
        if (cVar21 == puVar16[0x10]) {
LAB_0027c0a4:
          **(undefined4 **)(puVar16 + 0x9c) = 6;
          break;
        }
      }
      else {
        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {
          puVar16[0x2c] = cVar20;
          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];
          piVar9 = *(int **)(puVar16 + 8);
          iVar17 = *piVar9;
          *(int **)(puVar16 + -0x10) = piVar9;
          pcVar2 = *(code **)(iVar17 + 0x24);
          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;
          iVar17 = (*pcVar2)();
          cVar21 = puVar16[0x28];
          piVar3 = (int *)0x0;
          if (iVar17 != -1) {
            cVar21 = '\0';
            piVar3 = piVar9;
          }
          cVar20 = puVar16[0x2c];
          *(int **)(puVar16 + 8) = piVar3;
          goto LAB_0027bd1f;
        }
        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;
      }
      bVar7 = *param_10;
      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);
      *(uint *)(puVar16 + 0x10) = (uint)bVar7;
      if (bVar5 == 0) {
        pcVar2 = *(code **)(*piVar8 + 0x20);
        bVar5 = bVar7;
        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {
          puVar16[0x28] = cVar20;
          *(undefined4 *)(puVar16 + -8) = 0;
          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;
          *(int **)(puVar16 + -0x10) = piVar8;
          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;
          bVar5 = (*pcVar2)();
          cVar20 = puVar16[0x28];
        }
        if (bVar5 != 0) {
          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;
          goto LAB_0027bd69;
        }
LAB_0027bc28:
        iVar17 = piVar8[6];
        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {
          pbVar18 = param_10 + 1;
          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {
            pbVar18 = *(byte **)(puVar16 + 0xa8);
          }
          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {
            do {
              pbVar18 = pbVar18 + 1;
              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;
            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);
          }
          *(byte **)(puVar16 + 0xa4) = pbVar18;
          uVar19 = *(uint *)(puVar16 + 0xc);
          *(int **)(puVar16 + 0x10) = piVar8;
          cVar20 = uVar19 == 0xffffffff;
          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;
          bVar13 = (bool)cVar20;
          if (bVar14) goto LAB_0027bfff;
LAB_0027bfa2:
          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];
          if (bVar7 != 0) goto LAB_0027c01c;
LAB_0027bfb1:
          cVar21 = puVar16[0x32];
LAB_0027bfb6:
          if ((bool)cVar21 != bVar13) {
            do {
              uVar10 = uVar19;
              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {
LAB_0027bfc8:
                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)
                    & 0x20) == 0) break;
                pbVar18 = (byte *)param_3[2];
                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;
                iVar17 = *param_3;
                *(int **)(puVar16 + -0x10) = param_3;
                pcVar2 = *(code **)(iVar17 + 0x28);
                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;
                (*pcVar2)();
              }
              else {
                pbVar18 = (byte *)param_3[2];
                if ((byte *)param_3[3] <= pbVar18) {
                  iVar17 = *param_3;
                  *(int **)(puVar16 + -0x10) = param_3;
                  pcVar2 = *(code **)(iVar17 + 0x24);
                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;
                  uVar10 = (*pcVar2)();
                  if (uVar10 == 0xffffffff) {
                    param_3 = (int *)0x0;
                  }
                  goto LAB_0027bfc8;
                }
                piVar8 = *(int **)(puVar16 + 0x10);
                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {
                  param_10 = *(byte **)(puVar16 + 0xa4);
                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;
                  goto LAB_0027bccc;
                }
LAB_0027bfe5:
                param_3[2] = (int)(pbVar18 + 1);
              }
              uVar19 = 0xffffffff;
              cVar20 = true;
              bVar14 = param_3 != (int *)0x0;
              bVar13 = (bool)cVar20;
              if (!bVar14) goto LAB_0027bfa2;
LAB_0027bfff:
              if ((uint)param_3[3] <= (uint)param_3[2]) {
                puVar16[0xc] = cVar20;
                iVar17 = *param_3;
                *(int **)(puVar16 + -0x10) = param_3;
                pcVar2 = *(code **)(iVar17 + 0x24);
                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;
                iVar17 = (*pcVar2)();
                bVar13 = false;
                if (iVar17 == -1) {
                  param_3 = (int *)0x0;
                  bVar13 = bVar14;
                }
                cVar20 = puVar16[0xc];
                goto LAB_0027bfa2;
              }
              bVar13 = false;
              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];
              if (bVar7 == 0) goto LAB_0027bfb1;
LAB_0027c01c:
              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))
              goto LAB_0027c2c0;
              if (bVar13 == false) break;
            } while( true );
          }
          *(uint *)(puVar16 + 0xc) = uVar19;
          piVar8 = *(int **)(puVar16 + 0x10);
          param_10 = *(byte **)(puVar16 + 0xa4);
          goto LAB_0027bccc;
        }
        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {
          cVar21 = puVar16[0xc];
        }
        else if ((char *)param_3[2] < (char *)param_3[3]) {
          cVar21 = *(char *)param_3[2];
        }
        else {
          puVar16[0x10] = cVar20;
          iVar17 = *param_3;
          *(int **)(puVar16 + -0x10) = param_3;
          pcVar2 = *(code **)(iVar17 + 0x24);
          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;
          iVar11 = (*pcVar2)();
          cVar20 = puVar16[0x10];
          iVar17 = -1;
          if (iVar11 != -1) {
            iVar17 = iVar11;
          }
          cVar21 = (char)iVar17;
          if (iVar11 == -1) {
            param_3 = (int *)0x0;
          }
        }
        iVar17 = *piVar8;
        puVar16[0x10] = cVar20;
        *(int *)(puVar16 + -0xc) = (int)cVar21;
        *(int **)(puVar16 + -0x10) = piVar8;
        pcVar2 = *(code **)(iVar17 + 0x10);
        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;
        cVar20 = (*pcVar2)();
        iVar17 = *piVar8;
        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;
        *(int **)(puVar16 + -0x10) = piVar8;
        pcVar2 = *(code **)(iVar17 + 0x10);
        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;
        cVar21 = (*pcVar2)();
        if (cVar21 != cVar20) {
          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {
            cVar20 = puVar16[0xc];
          }
          else if ((char *)param_3[2] < (char *)param_3[3]) {
            cVar20 = *(char *)param_3[2];
          }
          else {
            iVar17 = *param_3;
            *(int **)(puVar16 + -0x10) = param_3;
            pcVar2 = *(code **)(iVar17 + 0x24);
            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;
            iVar11 = (*pcVar2)();
            iVar17 = -1;
            if (iVar11 != -1) {
              iVar17 = iVar11;
            }
            cVar20 = (char)iVar17;
            if (iVar11 == -1) {
              param_3 = (int *)0x0;
            }
          }
          iVar17 = *piVar8;
          *(int *)(puVar16 + -0xc) = (int)cVar20;
          *(int **)(puVar16 + -0x10) = piVar8;
          pcVar2 = *(code **)(iVar17 + 8);
          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;
          cVar20 = (*pcVar2)();
          iVar17 = *piVar8;
          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;
          *(int **)(puVar16 + -0x10) = piVar8;
          pcVar2 = *(code **)(iVar17 + 8);
          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;
          cVar21 = (*pcVar2)();
          if (cVar21 != cVar20) {
LAB_0027c4c0:
            **(undefined4 **)(puVar16 + 0x9c) = 4;
            break;
          }
        }
        if ((uint)param_3[2] < (uint)param_3[3]) {
          param_3[2] = param_3[2] + 1;
        }
        else {
          iVar17 = *param_3;
          *(int **)(puVar16 + -0x10) = param_3;
          pcVar2 = *(code **)(iVar17 + 0x28);
          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;
          (*pcVar2)();
        }
        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;
        param_10 = param_10 + 1;
LAB_0027bccc:
        puVar4 = puVar16;
        if (*(byte **)(puVar16 + 0xa8) == param_10) break;
      }
      else {
LAB_0027bd69:
        if (bVar5 != 0x25) goto LAB_0027bc28;
        *(byte **)(puVar16 + 0x28) = param_10 + 1;
        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;
        bVar7 = param_10[1];
        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;
        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);
        puVar16[0x10] = cVar20;
        uVar12 = 0x25;
        if (cVar20 == '\0') {
          pcVar2 = *(code **)(*piVar8 + 0x20);
          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {
            puVar16[0x10] = 0x25;
            *(undefined4 *)(puVar16 + -8) = 0;
            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;
            *(int **)(puVar16 + -0x10) = piVar8;
            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;
            bVar7 = (*pcVar2)();
            uVar12 = puVar16[0x10];
          }
          if (bVar7 != 0) {
            puVar16[0x10] = bVar7;
            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;
            goto LAB_0027bdcc;
          }
          puVar16[0x10] = 0;
          iVar17 = 0;
          *(undefined4 *)(puVar16 + 0x3c) = 0;
          bVar7 = 0;
        }
        else {
LAB_0027bdcc:
          bVar7 = puVar16[0x10];
          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {
            *(byte **)(puVar16 + 0x28) = param_10 + 2;
            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;
            bVar5 = param_10[2];
            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;
            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);
            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];
            if (bVar7 == 0) {
              iVar17 = (int)(char)bVar5;
              pcVar2 = *(code **)(*piVar8 + 0x20);
              bVar7 = bVar5;
              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {
                puVar16[0x33] = uVar12;
                *(undefined4 *)(puVar16 + -8) = 0;
                *(int *)(puVar16 + -0xc) = iVar17;
                *(int **)(puVar16 + -0x10) = piVar8;
                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;
                bVar7 = (*pcVar2)();
                uVar12 = puVar16[0x33];
                iVar17 = (int)(char)bVar7;
              }
              if (bVar7 != 0) {
                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;
              }
            }
            else {
              iVar17 = (int)(char)bVar7;
            }
          }
          else {
            *(undefined4 *)(puVar16 + 0x3c) = 0;
            iVar17 = (int)(char)bVar7;
            puVar16[0x10] = 0;
          }
        }
        puVar16[0x33] = uVar12;
        puVar16[0x2c] = bVar7;
        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);
        if (pcVar2 == *(code **)(puVar16 + 0x38)) {
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);
          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;
          piVar9 = (int *)FUN_00212050();
          uVar12 = puVar16[0x2c];
          uVar6 = puVar16[0x33];
          **(undefined4 **)(puVar16 + 0x9c) = 0;
          if ((char)piVar9[7] == '\0') {
            puVar16[0x33] = uVar6;
            puVar16[0x2c] = uVar12;
            *(int **)(puVar16 + -0x10) = piVar9;
            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;
            FUN_00242f30();
            uVar12 = puVar16[0x2c];
            uVar6 = puVar16[0x33];
            pcVar2 = *(code **)(*piVar9 + 0x18);
            if (pcVar2 != *(code **)(puVar16 + 0x44)) {
              *(undefined4 *)(puVar16 + -0xc) = 0x25;
              *(int **)(puVar16 + -0x10) = piVar9;
              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;
              uVar6 = (*pcVar2)();
              uVar12 = puVar16[0x2c];
            }
          }
          else {
            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);
          }
          puVar16[0x5c] = uVar6;
          if (puVar16[0x10] == '\0') {
            puVar16[0x5d] = uVar12;
            puVar16[0x5e] = 0;
          }
          else {
            puVar16[0x5e] = uVar12;
            puVar16[0x5f] = 0;
            puVar16[0x5d] = puVar16[0x10];
          }
          *(int **)(puVar16 + 0x18) = param_3;
          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);
          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);
          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);
          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);
          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);
          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);
          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);
          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);
          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);
          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);
          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);
          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;
          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;
          FUN_0027a830();
          iVar17 = *(int *)(puVar16 + 0x48);
          param_3 = *(int **)(puVar16 + 0x44);
          *(int *)(puVar16 + 0x18) = iVar17;
          *(int *)(puVar16 + 8) = iVar17;
          *(int **)(puVar16 + 0x14) = param_3;
          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;
          cVar20 = iVar17 == -1;
          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {
            puVar16[0xc] = bVar13;
            iVar17 = *param_3;
            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);
            pcVar2 = *(code **)(iVar17 + 0x24);
            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;
            iVar17 = (*pcVar2)();
            if (iVar17 == -1) {
              param_3 = (int *)0x0;
              cVar20 = puVar16[0xc];
            }
          }
          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {
            cVar21 = puVar16[0x2e];
          }
          else {
            cVar21 = '\0';
            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {
              iVar17 = **(int **)(puVar16 + 4);
              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);
              pcVar2 = *(code **)(iVar17 + 0x24);
              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;
              iVar17 = (*pcVar2)();
              cVar21 = iVar17 == -1;
            }
          }
          if (cVar21 == cVar20) {
            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;
          }
        }
        else {
          *(int **)(puVar16 + 0x88) = param_3;
          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);
          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);
          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);
          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);
          *(int *)(puVar16 + -0xc) = iVar17;
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);
          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);
          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);
          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);
          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);
          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);
          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);
          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);
          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;
          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;
          (*pcVar2)();
          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);
          param_3 = *(int **)(puVar16 + 0x84);
          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);
          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);
        }
        puVar15 = puVar16 + -4;
        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);
        puVar1 = (undefined4 *)(puVar16 + 0xa4);
        puVar16 = puVar16 + -4;
        puVar4 = puVar15;
        if ((byte *)*puVar1 == param_10) break;
      }
      puVar16 = puVar4;
    } while (**(int **)(puVar16 + 0x9c) == 0);
  }
  piVar8 = *(int **)(puVar16 + 0x80);
  iVar17 = *(int *)(puVar16 + 0xc);
  *piVar8 = (int)param_3;
  piVar8[1] = iVar17;
  return;
LAB_0027c2c0:
  puVar16[0x28] = cVar20;
  puVar16[0xc] = bVar7;
  piVar8 = *(int **)(puVar16 + 8);
  iVar17 = *piVar8;
  *(int **)(puVar16 + -0x10) = piVar8;
  pcVar2 = *(code **)(iVar17 + 0x24);
  *(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;
  iVar17 = (*pcVar2)();
  cVar21 = puVar16[0xc];
  piVar9 = (int *)0x0;
  if (iVar17 != -1) {
    cVar21 = '\0';
    piVar9 = piVar8;
  }
  cVar20 = puVar16[0x28];
  *(int **)(puVar16 + 8) = piVar9;
  goto LAB_0027bfb6;
}


CALL 0x0006206b
ADD EAX,0x12e47b
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x78
MOV EBX,EAX
MOV ESI,dword ptr [ESP + 0x98]
MOV ECX,dword ptr [ESP + 0xa4]
MOV dword ptr [ESP + 0x20],EAX
MOV EBP,dword ptr [ESP + 0xb0]
MOV EDI,dword ptr [ESP + 0x94]
MOV dword ptr [ESP + 0x18],ESI
MOV ESI,dword ptr [ESP + 0x9c]
MOV dword ptr [ESP + 0x14],ESI
MOV ESI,dword ptr [ESP + 0xa0]
MOV dword ptr [ESP + 0x40],ESI
LEA ESI,[ECX + 0x6c]
MOV dword ptr [ESP + 0x4c],ESI
PUSH ESI
MOV dword ptr [ESP + 0x24],EAX
CALL 0x00212050
MOV ECX,dword ptr [ESP + 0xac]
ADD ESP,0x10
MOV dword ptr [ECX],0x0
CMP EBP,dword ptr [ESP + 0xa8]
JZ 0x0027bf27
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x14]
CMP dword ptr [ESP + 0x34],-0x1
SETZ byte ptr [ESP + 0x32]
LEA EBX,[EAX + 0xffed19c0]
LEA EAX,[EAX + 0xffd0d290]
MOV dword ptr [ESP + 0x38],EBX
MOV dword ptr [ESP + 0x44],EAX
JMP 0x0027bcea
MOV EAX,dword ptr [ESI + 0x18]
MOVZX ECX,byte ptr [EBP]
TEST byte ptr [EAX + ECX*0x2 + 0x1],0x20
JNZ 0x0027bf48
TEST EDI,EDI
JZ 0x0027bc46
TEST DL,DL
JNZ 0x0027c1f0
MOVZX EAX,byte ptr [ESP + 0xc]
MOV ECX,dword ptr [ESI]
MOV byte ptr [ESP + 0x10],DL
MOVSX EAX,AL
SUB ESP,0x8
PUSH EAX
PUSH ESI
CALL dword ptr [ECX + 0x10]
POP ECX
MOVSX ECX,byte ptr [EBP]
MOV EBX,EAX
POP EAX
MOV EAX,dword ptr [ESI]
PUSH ECX
PUSH ESI
CALL dword ptr [EAX + 0x10]
ADD ESP,0x10
CMP AL,BL
JZ 0x0027bcaf
TEST EDI,EDI
JZ 0x0027bc83
MOVZX EDX,byte ptr [ESP + 0x10]
TEST DL,DL
JNZ 0x0027c3c0
MOVZX EAX,byte ptr [ESP + 0xc]
MOV EDX,dword ptr [ESI]
SUB ESP,0x8
MOVSX EAX,AL
PUSH EAX
PUSH ESI
CALL dword ptr [EDX + 0x8]
MOV EBX,EAX
POP EAX
POP EDX
MOVSX EDX,byte ptr [EBP]
MOV EAX,dword ptr [ESI]
PUSH EDX
PUSH ESI
CALL dword ptr [EAX + 0x8]
ADD ESP,0x10
CMP AL,BL
JNZ 0x0027c4c0
MOV EAX,dword ptr [EDI + 0x8]
CMP EAX,dword ptr [EDI + 0xc]
JNC 0x0027c410
ADD EAX,0x1
MOV dword ptr [EDI + 0x8],EAX
MOV dword ptr [ESP + 0xc],0xffffffff
ADD EBP,0x1
CMP dword ptr [ESP + 0xa8],EBP
JZ 0x0027bf27
MOV EAX,dword ptr [ESP + 0x9c]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JNZ 0x0027bf27
CMP dword ptr [ESP + 0xc],-0x1
SETZ DL
TEST EDI,EDI
SETNZ BL
AND BL,DL
MOV byte ptr [ESP + 0x10],BL
JNZ 0x0027c0c0
MOV byte ptr [ESP + 0x10],DL
MOV EAX,dword ptr [ESP + 0x8]
TEST EAX,EAX
SETNZ CL
AND CL,byte ptr [ESP + 0x32]
JNZ 0x0027c088
MOVZX ECX,byte ptr [ESP + 0x32]
CMP CL,byte ptr [ESP + 0x10]
JZ 0x0027c0a4
MOVZX EBX,byte ptr [EBP]
MOVZX ECX,byte ptr [ESI + EBX*0x1 + 0x11d]
MOV EAX,EBX
MOV dword ptr [ESP + 0x10],EBX
TEST CL,CL
JNZ 0x0027bd69
MOV ECX,dword ptr [ESI]
MOV EBX,dword ptr [ESP + 0x14]
MOV ECX,dword ptr [ECX + 0x20]
CMP ECX,dword ptr [EBX + 0xfffffdb4]
JNZ 0x0027c180
TEST AL,AL
JZ 0x0027bc28
MOV ECX,dword ptr [ESP + 0x10]
MOV byte ptr [ESI + ECX*0x1 + 0x11d],AL
MOV ECX,EAX
CMP CL,0x25
JNZ 0x0027bc28
LEA EAX,[EBP + 0x1]
MOV dword ptr [ESP + 0x28],EAX
CMP dword ptr [ESP + 0xa8],EAX
JZ 0x0027c4c0
MOVZX EAX,byte ptr [EBP + 0x1]
MOV EDX,EAX
MOV dword ptr [ESP + 0x2c],EAX
MOVZX EAX,byte ptr [ESI + EAX*0x1 + 0x11d]
MOV byte ptr [ESP + 0x10],AL
TEST AL,AL
JNZ 0x0027bdcc
MOV EAX,dword ptr [ESI]
MOV EBX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX + 0x20]
CMP EAX,dword ptr [EBX + 0xfffffdb4]
JNZ 0x0027c3e8
TEST DL,DL
JZ 0x0027c208
MOV EAX,dword ptr [ESP + 0x2c]
MOV byte ptr [ESP + 0x10],DL
MOV byte ptr [ESI + EAX*0x1 + 0x11d],DL
MOVZX EDX,byte ptr [ESP + 0x10]
CMP DL,0x45
JZ 0x0027c0f8
CMP DL,0x4f
JZ 0x0027c0f8
MOV dword ptr [ESP + 0x3c],0x0
MOVSX EBP,DL
MOV byte ptr [ESP + 0x10],0x0
MOV EAX,dword ptr [ESP + 0x84]
MOV byte ptr [ESP + 0x33],CL
MOV byte ptr [ESP + 0x2c],DL
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x20]
CMP EAX,dword ptr [ESP + 0x38]
JNZ 0x0027c220
SUB ESP,0xc
PUSH dword ptr [ESP + 0x4c]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x00212050
MOV EBP,EAX
MOV EAX,dword ptr [ESP + 0xac]
ADD ESP,0x10
MOVZX EDX,byte ptr [ESP + 0x2c]
MOVZX ECX,byte ptr [ESP + 0x33]
MOV dword ptr [EAX],0x0
CMP byte ptr [EBP + 0x1c],0x0
JZ 0x0027c1a0
MOVZX ECX,byte ptr [EBP + 0x42]
CMP byte ptr [ESP + 0x10],0x0
MOV byte ptr [ESP + 0x5c],CL
JNZ 0x0027c160
MOV byte ptr [ESP + 0x5d],DL
MOV byte ptr [ESP + 0x5e],0x0
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x18],EDI
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x24],EAX
LEA EAX,[ESP + 0x48]
SUB ESP,0x8
LEA EDX,[ESP + 0x64]
PUSH EDX
PUSH dword ptr [ESP + 0xac]
PUSH dword ptr [ESP + 0xac]
PUSH dword ptr [ESP + 0xac]
PUSH dword ptr [ESP + 0x3c]
PUSH dword ptr [ESP + 0x3c]
PUSH dword ptr [ESP + 0x3c]
PUSH dword ptr [ESP + 0x3c]
PUSH dword ptr [ESP + 0xac]
PUSH EAX
MOV EBX,dword ptr [ESP + 0x44]
CALL 0x0027a830
MOV EDX,dword ptr [ESP + 0x78]
MOV EAX,dword ptr [ESP + 0x74]
MOV dword ptr [ESP + 0x48],EDX
MOV EDI,EAX
MOV dword ptr [ESP + 0x38],EDX
MOV dword ptr [ESP + 0x44],EAX
ADD ESP,0x2c
CMP EDX,-0x1
SETZ BL
TEST EDI,EDI
SETNZ DL
AND DL,BL
JNZ 0x0027c360
MOV EAX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JZ 0x0027bf00
CMP byte ptr [ESP + 0x32],0x0
JNZ 0x0027c330
MOVZX EAX,byte ptr [ESP + 0x32]
CMP AL,BL
JNZ 0x0027bf13
MOV EAX,dword ptr [ESP + 0x9c]
OR dword ptr [EAX],0x2
MOV EBP,dword ptr [ESP + 0x28]
ADD EBP,0x1
CMP dword ptr [ESP + 0xa8],EBP
JNZ 0x0027bcd9
MOV EAX,dword ptr [ESP + 0x80]
MOV ESI,dword ptr [ESP + 0xc]
MOV dword ptr [EAX],EDI
MOV dword ptr [EAX + 0x4],ESI
ADD ESP,0x6c
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
LEA EDX,[EBP + 0x1]
CMP dword ptr [ESP + 0xa8],EDX
JZ 0x0027c4b4
MOVZX ECX,byte ptr [EBP + 0x1]
MOV EBP,EDX
TEST byte ptr [EAX + ECX*0x2 + 0x1],0x20
JZ 0x0027bf82
MOV ECX,dword ptr [ESP + 0xa8]
JMP 0x0027bf7b
MOVZX EDX,byte ptr [EBP]
TEST byte ptr [EAX + EDX*0x2 + 0x1],0x20
JZ 0x0027bf82
ADD EBP,0x1
CMP ECX,EBP
JNZ 0x0027bf70
MOV dword ptr [ESP + 0xa4],EBP
MOV EBP,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x10],ESI
CMP EBP,-0x1
SETZ CL
TEST EDI,EDI
SETNZ BL
AND BL,CL
JNZ 0x0027bfff
MOV EBX,ECX
MOV EAX,dword ptr [ESP + 0x8]
TEST EAX,EAX
SETNZ DL
AND DL,byte ptr [ESP + 0x32]
JNZ 0x0027c01c
MOVZX EDX,byte ptr [ESP + 0x32]
CMP DL,BL
JZ 0x0027c038
TEST EDI,EDI
JZ 0x0027bfc6
TEST CL,CL
JNZ 0x0027c050
MOV EAX,EBP
MOV ESI,dword ptr [ESP + 0x10]
MOVZX EAX,AL
MOV EDX,dword ptr [ESI + 0x18]
TEST byte ptr [EDX + EAX*0x2 + 0x1],0x20
JZ 0x0027c038
MOV EAX,dword ptr [EDI + 0x8]
CMP EAX,dword ptr [EDI + 0xc]
JNC 0x0027c0e0
ADD EAX,0x1
MOV dword ptr [EDI + 0x8],EAX
MOV EBP,0xffffffff
CMP EBP,-0x1
SETZ CL
TEST EDI,EDI
SETNZ BL
AND BL,CL
JZ 0x0027bfa0
MOV EAX,dword ptr [EDI + 0xc]
CMP dword ptr [EDI + 0x8],EAX
JNC 0x0027c300
MOV EAX,dword ptr [ESP + 0x8]
XOR EBX,EBX
TEST EAX,EAX
SETNZ DL
AND DL,byte ptr [ESP + 0x32]
JZ 0x0027bfb1
MOV EAX,dword ptr [ESP + 0x8]
MOV ESI,dword ptr [EAX + 0xc]
CMP dword ptr [EAX + 0x8],ESI
JNC 0x0027c2c0
XOR EDX,EDX
CMP DL,BL
JNZ 0x0027bfba
LEA ESI,[ESI]
MOV dword ptr [ESP + 0xc],EBP
MOV ESI,dword ptr [ESP + 0x10]
MOV EBP,dword ptr [ESP + 0xa4]
JMP 0x0027bccc
MOV EAX,dword ptr [EDI + 0x8]
CMP EAX,dword ptr [EDI + 0xc]
JNC 0x0027c3a0
MOV ESI,dword ptr [ESP + 0x10]
MOVZX ECX,byte ptr [EAX]
MOV EDX,dword ptr [ESI + 0x18]
TEST byte ptr [EDX + ECX*0x2 + 0x1],0x20
JNZ 0x0027bfe5
MOV EBP,dword ptr [ESP + 0xa4]
MOV dword ptr [ESP + 0xc],0xffffffff
JMP 0x0027bccc
MOV EAX,dword ptr [ESP + 0x8]
MOV EBX,dword ptr [EAX + 0xc]
CMP dword ptr [EAX + 0x8],EBX
JNC 0x0027c457
XOR ECX,ECX
CMP CL,byte ptr [ESP + 0x10]
JNZ 0x0027bd29
MOV EAX,dword ptr [ESP + 0x9c]
MOV dword ptr [EAX],0x6
JMP 0x0027bf27
MOV EAX,dword ptr [EDI + 0xc]
CMP dword ptr [EDI + 0x8],EAX
JNC 0x0027c421
MOV byte ptr [ESP + 0x10],0x0
JMP 0x0027bd07
SUB ESP,0xc
MOV EAX,dword ptr [EDI]
PUSH EDI
CALL dword ptr [EAX + 0x28]
ADD ESP,0x10
JMP 0x0027bfeb
LEA EAX,[EBP + 0x2]
MOV dword ptr [ESP + 0x28],EAX
CMP dword ptr [ESP + 0xa8],EAX
JZ 0x0027c4c0
MOVZX EAX,byte ptr [EBP + 0x2]
MOVSX EBP,byte ptr [ESP + 0x10]
MOV EDX,EAX
MOV dword ptr [ESP + 0x2c],EAX
MOVZX EAX,byte ptr [ESI + EAX*0x1 + 0x11d]
MOV dword ptr [ESP + 0x3c],EBP
TEST AL,AL
JNZ 0x0027c3d8
MOV EAX,dword ptr [ESI]
MOV EBX,dword ptr [ESP + 0x14]
MOVSX EBP,DL
MOV EAX,dword ptr [EAX + 0x20]
CMP EAX,dword ptr [EBX + 0xfffffdb4]
JNZ 0x0027c495
TEST DL,DL
JZ 0x0027bdf3
MOV EAX,dword ptr [ESP + 0x2c]
MOV byte ptr [ESI + EAX*0x1 + 0x11d],DL
JMP 0x0027bdf3
MOVZX EAX,byte ptr [ESP + 0x10]
MOV byte ptr [ESP + 0x5e],DL
MOV byte ptr [ESP + 0x5f],0x0
MOV byte ptr [ESP + 0x5d],AL
JMP 0x0027be63
MOV byte ptr [ESP + 0x28],DL
MOVSX EAX,AL
SUB ESP,0x4
PUSH 0x0
PUSH EAX
PUSH ESI
CALL ECX
MOVZX EDX,byte ptr [ESP + 0x38]
ADD ESP,0x10
JMP 0x0027bd54
MOV byte ptr [ESP + 0x33],CL
SUB ESP,0xc
MOV byte ptr [ESP + 0x38],DL
PUSH EBP
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x00242f30
MOV EAX,dword ptr [EBP]
ADD ESP,0x10
MOVZX EDX,byte ptr [ESP + 0x2c]
MOVZX ECX,byte ptr [ESP + 0x33]
MOV EAX,dword ptr [EAX + 0x18]
CMP EAX,dword ptr [ESP + 0x44]
JZ 0x0027be4b
SUB ESP,0x8
PUSH 0x25
PUSH EBP
CALL EAX
MOVZX EDX,byte ptr [ESP + 0x3c]
MOV ECX,EAX
ADD ESP,0x10
JMP 0x0027be4b
MOV EAX,dword ptr [EDI + 0x8]
CMP EAX,dword ptr [EDI + 0xc]
JNC 0x0027c4d2
MOVZX EAX,byte ptr [EAX]
JMP 0x0027bc4b
MOV byte ptr [ESP + 0x10],0x0
XOR EBP,EBP
MOV dword ptr [ESP + 0x3c],0x0
JMP 0x0027bdf3
MOV dword ptr [ESP + 0x88],EDI
MOV EDI,dword ptr [ESP + 0xc]
LEA EDX,[ESP + 0x48]
SUB ESP,0x4
MOV EBX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x90],EDI
MOV EDI,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x98],EBX
MOV dword ptr [ESP + 0x94],EDI
PUSH dword ptr [ESP + 0x40]
PUSH EBP
PUSH dword ptr [ESP + 0xac]
PUSH dword ptr [ESP + 0xac]
PUSH dword ptr [ESP + 0xac]
PUSH dword ptr [ESP + 0xac]
PUSH dword ptr [ESP + 0xac]
PUSH dword ptr [ESP + 0xac]
PUSH dword ptr [ESP + 0xac]
PUSH dword ptr [ESP + 0xac]
PUSH EDX
CALL EAX
MOV EAX,dword ptr [ESP + 0x74]
MOV EDX,dword ptr [ESP + 0x78]
MOV dword ptr [ESP + 0xb4],EAX
MOV EDI,dword ptr [ESP + 0xb4]
MOV dword ptr [ESP + 0xb8],EDX
MOV EAX,dword ptr [ESP + 0xb8]
MOV dword ptr [ESP + 0x38],EAX
ADD ESP,0x2c
JMP 0x0027bf13
MOV byte ptr [ESP + 0x28],CL
SUB ESP,0xc
MOV byte ptr [ESP + 0x18],DL
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESI]
PUSH ESI
CALL dword ptr [EAX + 0x24]
MOVZX EDX,byte ptr [ESP + 0x1c]
MOV ECX,0x0
ADD ESP,0x10
CMP EAX,-0x1
MOV EAX,0x0
CMOVNZ EAX,ESI
CMOVNZ EDX,ECX
MOVZX ECX,byte ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x8],EAX
JMP 0x0027bfb6
MOV byte ptr [ESP + 0xc],CL
SUB ESP,0xc
MOV EAX,dword ptr [EDI]
PUSH EDI
CALL dword ptr [EAX + 0x24]
MOV ECX,0x0
ADD ESP,0x10
CMP EAX,-0x1
MOV EAX,0x0
CMOVNZ EBX,ECX
CMOVZ EDI,EAX
MOVZX ECX,byte ptr [ESP + 0xc]
JMP 0x0027bfa2
MOV ECX,dword ptr [ESP + 0x8]
XOR EAX,EAX
MOV EDX,dword ptr [ECX + 0xc]
CMP dword ptr [ECX + 0x8],EDX
JC 0x0027bf05
SUB ESP,0xc
MOV ECX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ECX]
PUSH ECX
CALL dword ptr [EAX + 0x24]
ADD ESP,0x10
CMP EAX,-0x1
SETZ AL
JMP 0x0027bf05
XOR EBX,EBX
MOV EAX,dword ptr [EDI + 0xc]
CMP dword ptr [EDI + 0x8],EAX
JC 0x0027beed
MOV byte ptr [ESP + 0x10],DL
SUB ESP,0xc
MOV EAX,dword ptr [EDI]
PUSH dword ptr [ESP + 0x24]
CALL dword ptr [EAX + 0x24]
MOVZX EDX,byte ptr [ESP + 0x20]
ADD ESP,0x10
CMP EAX,-0x1
MOV EAX,0x0
CMOVZ EBX,EDX
CMOVZ EDI,EAX
JMP 0x0027beed
SUB ESP,0xc
MOV EAX,dword ptr [EDI]
MOV ESI,0x0
PUSH EDI
CALL dword ptr [EAX + 0x24]
ADD ESP,0x10
CMP EAX,-0x1
CMOVZ EDI,ESI
JMP 0x0027bfc8
MOV EAX,dword ptr [EDI + 0x8]
CMP EAX,dword ptr [EDI + 0xc]
JNC 0x0027c501
MOVZX EAX,byte ptr [EAX]
JMP 0x0027bc88
MOVSX EBP,AL
MOV EDX,EAX
JMP 0x0027bdf3
MOV byte ptr [ESP + 0x10],CL
MOVSX EDX,DL
SUB ESP,0x4
PUSH 0x0
PUSH EDX
PUSH ESI
CALL EAX
MOVZX ECX,byte ptr [ESP + 0x20]
MOV EDX,EAX
ADD ESP,0x10
JMP 0x0027bdb5
SUB ESP,0xc
MOV EAX,dword ptr [EDI]
PUSH EDI
CALL dword ptr [EAX + 0x28]
ADD ESP,0x10
JMP 0x0027bcc1
MOV byte ptr [ESP + 0x28],DL
SUB ESP,0xc
MOV EAX,dword ptr [EDI]
PUSH EDI
CALL dword ptr [EAX + 0x24]
MOVZX EBX,byte ptr [ESP + 0x20]
MOVZX EDX,byte ptr [ESP + 0x38]
ADD ESP,0x10
CMP EAX,-0x1
MOV EAX,0x0
CMOVNZ EBX,EAX
MOV EAX,0x0
CMOVZ EDI,EAX
MOV byte ptr [ESP + 0x10],BL
JMP 0x0027bd07
MOV byte ptr [ESP + 0x2c],DL
SUB ESP,0xc
MOV byte ptr [ESP + 0x34],CL
MOV EBX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EBX]
PUSH EBX
CALL dword ptr [EAX + 0x24]
MOVZX ECX,byte ptr [ESP + 0x38]
MOV EDX,0x0
ADD ESP,0x10
CMP EAX,-0x1
MOV EAX,0x0
CMOVNZ EAX,EBX
CMOVNZ ECX,EDX
MOVZX EDX,byte ptr [ESP + 0x2c]
MOV dword ptr [ESP + 0x8],EAX
JMP 0x0027bd1f
MOV byte ptr [ESP + 0x33],CL
SUB ESP,0x4
PUSH 0x0
PUSH EBP
PUSH ESI
CALL EAX
MOVZX ECX,byte ptr [ESP + 0x43]
MOVSX EBP,AL
ADD ESP,0x10
MOV EDX,EBP
JMP 0x0027c147
MOV EBP,dword ptr [ESP + 0xa8]
JMP 0x0027bf82
MOV EAX,dword ptr [ESP + 0x9c]
MOV dword ptr [EAX],0x4
JMP 0x0027bf27
MOV byte ptr [ESP + 0x10],DL
SUB ESP,0xc
MOV EAX,dword ptr [EDI]
PUSH EDI
CALL dword ptr [EAX + 0x24]
MOVZX EDX,byte ptr [ESP + 0x20]
MOV ECX,EAX
ADD ESP,0x10
CMP EAX,-0x1
MOV EAX,0xffffffff
CMOVNZ EAX,ECX
MOV ECX,0x0
CMOVZ EDI,ECX
JMP 0x0027bc4b
SUB ESP,0xc
MOV EAX,dword ptr [EDI]
PUSH EDI
CALL dword ptr [EAX + 0x24]
MOV EDX,EAX
ADD ESP,0x10
CMP EAX,-0x1
MOV EAX,0xffffffff
CMOVNZ EAX,EDX
MOV EDX,0x0
CMOVZ EDI,EDX
JMP 0x0027bc88
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_0027bb80(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n                 undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n                 byte *param_10,byte *param_11)\n\n{\n  undefined4 *puVar1;\n  code *pcVar2;\n  int *piVar3;\n  undefined1 *puVar4;\n  byte bVar5;\n  undefined1 uVar6;\n  byte bVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  undefined1 uVar12;\n  bool bVar13;\n  bool bVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  int iVar17;\n  byte *pbVar18;\n  uint uVar19;\n  char cVar20;\n  char cVar21;\n  int aiStackY_b0 [9];\n  undefined1 auStack_7c [4];\n  int local_78 [2];\n  uint local_70;\n  uint local_6c;\n  undefined **local_68;\n  int local_64 [4];\n  byte local_54 [4];\n  undefined4 local_50;\n  bool local_4a [2];\n  int local_48;\n  undefined **local_44;\n  int local_40 [2];\n  undefined **local_38;\n  int local_34 [5];\n  undefined1 local_20 [16];\n  \n  local_68 = &__DT_PLTGOT;\n  local_70 = param_4;\n  local_78[1] = param_5;\n  local_48 = param_6;\n  local_40[1] = param_7 + 0x6c;\n  piVar8 = (int *)FUN_00212050(local_40[1]);\n  *param_8 = 0;\n  puVar16 = auStack_7c;\n  if (param_10 != param_11) {\n    local_4a[0] = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }\n  piVar8 = *(int **)(puVar16 + 0x80);\n  iVar17 = *(int *)(puVar16 + 0xc);\n  *piVar8 = (int)param_3;\n  piVar8[1] = iVar17;\n  return;\nLAB_0027c2c0:\n  puVar16[0x28] = cVar20;\n  puVar16[0xc] = bVar7;\n  piVar8 = *(int **)(puVar16 + 8);\n  iVar17 = *piVar8;\n  *(int **)(puVar16 + -0x10) = piVar8;\n  pcVar2 = *(code **)(iVar17 + 0x24);\n  *(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;\n  iVar17 = (*pcVar2)();\n  cVar21 = puVar16[0xc];\n  piVar9 = (int *)0x0;\n  if (iVar17 != -1) {\n    cVar21 = '\0';\n    piVar9 = piVar8;\n  }\n  cVar20 = puVar16[0x28];\n  *(int **)(puVar16 + 8) = piVar9;\n  goto LAB_0027bfb6;\n}\n\n" comment (function_definition "void FUN_0027bb80(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n                 undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n                 byte *param_10,byte *param_11)\n\n{\n  undefined4 *puVar1;\n  code *pcVar2;\n  int *piVar3;\n  undefined1 *puVar4;\n  byte bVar5;\n  undefined1 uVar6;\n  byte bVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  undefined1 uVar12;\n  bool bVar13;\n  bool bVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  int iVar17;\n  byte *pbVar18;\n  uint uVar19;\n  char cVar20;\n  char cVar21;\n  int aiStackY_b0 [9];\n  undefined1 auStack_7c [4];\n  int local_78 [2];\n  uint local_70;\n  uint local_6c;\n  undefined **local_68;\n  int local_64 [4];\n  byte local_54 [4];\n  undefined4 local_50;\n  bool local_4a [2];\n  int local_48;\n  undefined **local_44;\n  int local_40 [2];\n  undefined **local_38;\n  int local_34 [5];\n  undefined1 local_20 [16];\n  \n  local_68 = &__DT_PLTGOT;\n  local_70 = param_4;\n  local_78[1] = param_5;\n  local_48 = param_6;\n  local_40[1] = param_7 + 0x6c;\n  piVar8 = (int *)FUN_00212050(local_40[1]);\n  *param_8 = 0;\n  puVar16 = auStack_7c;\n  if (param_10 != param_11) {\n    local_4a[0] = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }\n  piVar8 = *(int **)(puVar16 + 0x80);\n  iVar17 = *(int *)(puVar16 + 0xc);\n  *piVar8 = (int)param_3;\n  piVar8[1] = iVar17;\n  return;\nLAB_0027c2c0:\n  puVar16[0x28] = cVar20;\n  puVar16[0xc] = bVar7;\n  piVar8 = *(int **)(puVar16 + 8);\n  iVar17 = *piVar8;\n  *(int **)(puVar16 + -0x10) = piVar8;\n  pcVar2 = *(code **)(iVar17 + 0x24);\n  *(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;\n  iVar17 = (*pcVar2)();\n  cVar21 = puVar16[0xc];\n  piVar9 = (int *)0x0;\n  if (iVar17 != -1) {\n    cVar21 = '\0';\n    piVar9 = piVar8;\n  }\n  cVar20 = puVar16[0x28];\n  *(int **)(puVar16 + 8) = piVar9;\n  goto LAB_0027bfb6;\n}" primitive_type (function_declarator "FUN_0027bb80(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n                 undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n                 byte *param_10,byte *param_11)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n                 undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n                 byte *param_10,byte *param_11)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "undefined4 *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "byte *param_10" type_identifier (pointer_declarator "*param_10" * identifier)) , (parameter_declaration "byte *param_11" type_identifier (pointer_declarator "*param_11" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  code *pcVar2;\n  int *piVar3;\n  undefined1 *puVar4;\n  byte bVar5;\n  undefined1 uVar6;\n  byte bVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  undefined1 uVar12;\n  bool bVar13;\n  bool bVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  int iVar17;\n  byte *pbVar18;\n  uint uVar19;\n  char cVar20;\n  char cVar21;\n  int aiStackY_b0 [9];\n  undefined1 auStack_7c [4];\n  int local_78 [2];\n  uint local_70;\n  uint local_6c;\n  undefined **local_68;\n  int local_64 [4];\n  byte local_54 [4];\n  undefined4 local_50;\n  bool local_4a [2];\n  int local_48;\n  undefined **local_44;\n  int local_40 [2];\n  undefined **local_38;\n  int local_34 [5];\n  undefined1 local_20 [16];\n  \n  local_68 = &__DT_PLTGOT;\n  local_70 = param_4;\n  local_78[1] = param_5;\n  local_48 = param_6;\n  local_40[1] = param_7 + 0x6c;\n  piVar8 = (int *)FUN_00212050(local_40[1]);\n  *param_8 = 0;\n  puVar16 = auStack_7c;\n  if (param_10 != param_11) {\n    local_4a[0] = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }\n  piVar8 = *(int **)(puVar16 + 0x80);\n  iVar17 = *(int *)(puVar16 + 0xc);\n  *piVar8 = (int)param_3;\n  piVar8[1] = iVar17;\n  return;\nLAB_0027c2c0:\n  puVar16[0x28] = cVar20;\n  puVar16[0xc] = bVar7;\n  piVar8 = *(int **)(puVar16 + 8);\n  iVar17 = *piVar8;\n  *(int **)(puVar16 + -0x10) = piVar8;\n  pcVar2 = *(code **)(iVar17 + 0x24);\n  *(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;\n  iVar17 = (*pcVar2)();\n  cVar21 = puVar16[0xc];\n  piVar9 = (int *)0x0;\n  if (iVar17 != -1) {\n    cVar21 = '\0';\n    piVar9 = piVar8;\n  }\n  cVar20 = puVar16[0x28];\n  *(int **)(puVar16 + 8) = piVar9;\n  goto LAB_0027bfb6;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "undefined1 uVar6;" type_identifier identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined1 uVar12;" type_identifier identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "char cVar20;" primitive_type identifier ;) (declaration "char cVar21;" primitive_type identifier ;) (declaration "int aiStackY_b0 [9];" primitive_type (array_declarator "aiStackY_b0 [9]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_7c [4];" type_identifier (array_declarator "auStack_7c [4]" identifier [ number_literal ]) ;) (declaration "int local_78 [2];" primitive_type (array_declarator "local_78 [2]" identifier [ number_literal ]) ;) (declaration "uint local_70;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "undefined **local_68;" type_identifier (pointer_declarator "**local_68" * (pointer_declarator "*local_68" * identifier)) ;) (declaration "int local_64 [4];" primitive_type (array_declarator "local_64 [4]" identifier [ number_literal ]) ;) (declaration "byte local_54 [4];" type_identifier (array_declarator "local_54 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "bool local_4a [2];" primitive_type (array_declarator "local_4a [2]" identifier [ number_literal ]) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "undefined **local_44;" type_identifier (pointer_declarator "**local_44" * (pointer_declarator "*local_44" * identifier)) ;) (declaration "int local_40 [2];" primitive_type (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (declaration "undefined **local_38;" type_identifier (pointer_declarator "**local_38" * (pointer_declarator "*local_38" * identifier)) ;) (declaration "int local_34 [5];" primitive_type (array_declarator "local_34 [5]" identifier [ number_literal ]) ;) (declaration "undefined1 local_20 [16];" type_identifier (array_declarator "local_20 [16]" identifier [ number_literal ]) ;) (expression_statement "local_68 = &__DT_PLTGOT;" (assignment_expression "local_68 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "local_70 = param_4;" (assignment_expression "local_70 = param_4" identifier = identifier) ;) (expression_statement "local_78[1] = param_5;" (assignment_expression "local_78[1] = param_5" (subscript_expression "local_78[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_48 = param_6;" (assignment_expression "local_48 = param_6" identifier = identifier) ;) (expression_statement "local_40[1] = param_7 + 0x6c;" (assignment_expression "local_40[1] = param_7 + 0x6c" (subscript_expression "local_40[1]" identifier [ number_literal ]) = (binary_expression "param_7 + 0x6c" identifier + number_literal)) ;) (expression_statement "piVar8 = (int *)FUN_00212050(local_40[1]);" (assignment_expression "piVar8 = (int *)FUN_00212050(local_40[1])" identifier = (cast_expression "(int *)FUN_00212050(local_40[1])" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00212050(local_40[1])" identifier (argument_list "(local_40[1])" ( (subscript_expression "local_40[1]" identifier [ number_literal ]) ))))) ;) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) (expression_statement "puVar16 = auStack_7c;" (assignment_expression "puVar16 = auStack_7c" identifier = identifier) ;) (if_statement "if (param_10 != param_11) {\n    local_4a[0] = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }" if (parenthesized_expression "(param_10 != param_11)" ( (binary_expression "param_10 != param_11" identifier != identifier) )) (compound_statement "{\n    local_4a[0] = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }" { (expression_statement "local_4a[0] = local_48 == -1;" (assignment_expression "local_4a[0] = local_48 == -1" (subscript_expression "local_4a[0]" identifier [ number_literal ]) = (binary_expression "local_48 == -1" identifier == number_literal)) ;) (expression_statement "local_44 = local_68 + -0x4b990;" (assignment_expression "local_44 = local_68 + -0x4b990" identifier = (binary_expression "local_68 + -0x4b990" identifier + number_literal)) ;) (expression_statement "local_38 = local_68 + -0xbcb5c;" (assignment_expression "local_38 = local_68 + -0xbcb5c" identifier = (binary_expression "local_68 + -0xbcb5c" identifier + number_literal)) ;) (expression_statement "puVar16 = auStack_7c;" (assignment_expression "puVar16 = auStack_7c" identifier = identifier) ;) (do_statement "do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);" do (compound_statement "{\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    }" { (expression_statement "cVar20 = *(int *)(puVar16 + 0xc) == -1;" (assignment_expression "cVar20 = *(int *)(puVar16 + 0xc) == -1" identifier = (binary_expression "*(int *)(puVar16 + 0xc) == -1" (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) == number_literal)) ;) (expression_statement "bVar13 = param_3 != (int *)0x0 && (bool)cVar20;" (assignment_expression "bVar13 = param_3 != (int *)0x0 && (bool)cVar20" identifier = (binary_expression "param_3 != (int *)0x0 && (bool)cVar20" (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (cast_expression "(bool)cVar20" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "puVar16[0x10] = bVar13;" (assignment_expression "puVar16[0x10] = bVar13" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }" { (if_statement "if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }" if (parenthesized_expression "((uint)param_3[2] < (uint)param_3[3])" ( (binary_expression "(uint)param_3[2] < (uint)param_3[3]" (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          puVar16[0x10] = 0;\n        }" { (expression_statement "puVar16[0x10] = 0;" (assignment_expression "puVar16[0x10] = 0" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }" else (compound_statement "{\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }" { (expression_statement "puVar16[0x28] = cVar20;" (assignment_expression "puVar16[0x28] = cVar20" (subscript_expression "puVar16[0x28]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c42e;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c42e" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "uVar12 = puVar16[0x10];" (assignment_expression "uVar12 = puVar16[0x10]" identifier = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;) (expression_statement "cVar20 = puVar16[0x28];" (assignment_expression "cVar20 = puVar16[0x28]" identifier = (subscript_expression "puVar16[0x28]" identifier [ number_literal ])) ;) (if_statement "if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }" if (parenthesized_expression "(iVar17 == -1)" ( (binary_expression "iVar17 == -1" identifier == number_literal) )) (compound_statement "{\n            param_3 = (int *)0x0;\n          }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n            uVar12 = 0;\n          }" else (compound_statement "{\n            uVar12 = 0;\n          }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) }))) (expression_statement "puVar16[0x10] = uVar12;" (assignment_expression "puVar16[0x10] = uVar12" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) }))) }) (else_clause "else {\n        puVar16[0x10] = cVar20;\n      }" else (compound_statement "{\n        puVar16[0x10] = cVar20;\n      }" { (expression_statement "puVar16[0x10] = cVar20;" (assignment_expression "puVar16[0x10] = cVar20" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }" if (parenthesized_expression "((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0)" ( (binary_expression "(*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0" (parenthesized_expression "(*(int *)(puVar16 + 8) != 0 & puVar16[0x32])" ( (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) != number_literal) & (subscript_expression "puVar16[0x32]" identifier [ number_literal ])) )) == number_literal) )) (compound_statement "{\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }" { (expression_statement "cVar21 = puVar16[0x32];" (assignment_expression "cVar21 = puVar16[0x32]" identifier = (subscript_expression "puVar16[0x32]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }" statement_identifier : (if_statement "if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }" if (parenthesized_expression "(cVar21 == puVar16[0x10])" ( (binary_expression "cVar21 == puVar16[0x10]" identifier == (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) )) (compound_statement "{\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }" { (labeled_statement "LAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;" statement_identifier : (expression_statement "**(undefined4 **)(puVar16 + 0x9c) = 6;" (assignment_expression "**(undefined4 **)(puVar16 + 0x9c) = 6" (pointer_expression "**(undefined4 **)(puVar16 + 0x9c)" * (pointer_expression "*(undefined4 **)(puVar16 + 0x9c)" * (cast_expression "(undefined4 **)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) = number_literal) ;)) (break_statement "break;" break ;) }))) }) (else_clause "else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }" else (compound_statement "{\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }" { (if_statement "if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }" if (parenthesized_expression "(*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))" ( (binary_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)" (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc)" * (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 8) + 0xc)" ( (binary_expression "*(int *)(puVar16 + 8) + 0xc" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + number_literal) )))) <= (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 8)" * (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 8) + 8)" ( (binary_expression "*(int *)(puVar16 + 8) + 8" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }" { (expression_statement "puVar16[0x2c] = cVar20;" (assignment_expression "puVar16[0x2c] = cVar20" (subscript_expression "puVar16[0x2c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" (assignment_expression "puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (subscript_expression "puVar16[0x28]" identifier [ number_literal ]) = (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) != number_literal) & (subscript_expression "puVar16[0x32]" identifier [ number_literal ]))) ;) (expression_statement "piVar9 = *(int **)(puVar16 + 8);" (assignment_expression "piVar9 = *(int **)(puVar16 + 8)" identifier = (pointer_expression "*(int **)(puVar16 + 8)" * (cast_expression "(int **)(puVar16 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = *piVar9;" (assignment_expression "iVar17 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar9;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar9" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c46c;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c46c" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar21 = puVar16[0x28];" (assignment_expression "cVar21 = puVar16[0x28]" identifier = (subscript_expression "puVar16[0x28]" identifier [ number_literal ])) ;) (expression_statement "piVar3 = (int *)0x0;" (assignment_expression "piVar3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }" if (parenthesized_expression "(iVar17 != -1)" ( (binary_expression "iVar17 != -1" identifier != number_literal) )) (compound_statement "{\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }" { (expression_statement "cVar21 = '\0';" (assignment_expression "cVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "piVar3 = piVar9;" (assignment_expression "piVar3 = piVar9" identifier = identifier) ;) })) (expression_statement "cVar20 = puVar16[0x2c];" (assignment_expression "cVar20 = puVar16[0x2c]" identifier = (subscript_expression "puVar16[0x2c]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(puVar16 + 8) = piVar3;" (assignment_expression "*(int **)(puVar16 + 8) = piVar3" (pointer_expression "*(int **)(puVar16 + 8)" * (cast_expression "(int **)(puVar16 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0027bd1f;" goto statement_identifier ;) })) (if_statement "if (puVar16[0x10] == '\0') goto LAB_0027c0a4;" if (parenthesized_expression "(puVar16[0x10] == '\0')" ( (binary_expression "puVar16[0x10] == '\0'" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0027c0a4;" goto statement_identifier ;)) }))) (expression_statement "bVar7 = *param_10;" (assignment_expression "bVar7 = *param_10" identifier = (pointer_expression "*param_10" * identifier)) ;) (expression_statement "bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);" (assignment_expression "bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d)" identifier = (pointer_expression "*(byte *)((int)piVar8 + bVar7 + 0x11d)" * (cast_expression "(byte *)((int)piVar8 + bVar7 + 0x11d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + bVar7 + 0x11d)" ( (binary_expression "(int)piVar8 + bVar7 + 0x11d" (binary_expression "(int)piVar8 + bVar7" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar16 + 0x10) = (uint)bVar7;" (assignment_expression "*(uint *)(puVar16 + 0x10) = (uint)bVar7" (pointer_expression "*(uint *)(puVar16 + 0x10)" * (cast_expression "(uint *)(puVar16 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }" { (expression_statement "pcVar2 = *(code **)(*piVar8 + 0x20);" (assignment_expression "pcVar2 = *(code **)(*piVar8 + 0x20)" identifier = (pointer_expression "*(code **)(*piVar8 + 0x20)" * (cast_expression "(code **)(*piVar8 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar8 + 0x20)" ( (binary_expression "*piVar8 + 0x20" (pointer_expression "*piVar8" * identifier) + number_literal) ))))) ;) (expression_statement "bVar5 = bVar7;" (assignment_expression "bVar5 = bVar7" identifier = identifier) ;) (if_statement "if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }" if (parenthesized_expression "(pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c))" ( (binary_expression "pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" identifier != (pointer_expression "*(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" * (cast_expression "(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + 0x14) + -0x24c)" ( (binary_expression "*(int *)(puVar16 + 0x14) + -0x24c" (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }" { (expression_statement "puVar16[0x28] = cVar20;" (assignment_expression "puVar16[0x28] = cVar20" (subscript_expression "puVar16[0x28]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)bVar7;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)bVar7" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)(char)bVar7" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c190;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c190" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar5 = (*pcVar2)();" (assignment_expression "bVar5 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar20 = puVar16[0x28];" (assignment_expression "cVar20 = puVar16[0x28]" identifier = (subscript_expression "puVar16[0x28]" identifier [ number_literal ])) ;) })) (if_statement "if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }" if (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }" { (expression_statement "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;" (assignment_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5" (pointer_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d)" * (cast_expression "(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d)" ( (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d" (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x10)" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0027bd69;" goto statement_identifier ;) })) (labeled_statement "LAB_0027bc28:\n        iVar17 = piVar8[6];" statement_identifier : (expression_statement "iVar17 = piVar8[6];" (assignment_expression "iVar17 = piVar8[6]" identifier = (subscript_expression "piVar8[6]" identifier [ number_literal ])) ;)) (if_statement "if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }" if (parenthesized_expression "((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0)" ( (binary_expression "(*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20)" ( (binary_expression "*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20" (pointer_expression "*(byte *)(iVar17 + 1 + (uint)*param_10 * 2)" * (cast_expression "(byte *)(iVar17 + 1 + (uint)*param_10 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 1 + (uint)*param_10 * 2)" ( (binary_expression "iVar17 + 1 + (uint)*param_10 * 2" (binary_expression "iVar17 + 1" identifier + number_literal) + (binary_expression "(uint)*param_10 * 2" (binary_expression "(uint)*param_10" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }" { (expression_statement "pbVar18 = param_10 + 1;" (assignment_expression "pbVar18 = param_10 + 1" identifier = (binary_expression "param_10 + 1" identifier + number_literal)) ;) (if_statement "if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }" if (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == pbVar18)" ( (binary_expression "*(byte **)(puVar16 + 0xa8) == pbVar18" (pointer_expression "*(byte **)(puVar16 + 0xa8)" * (cast_expression "(byte **)(puVar16 + 0xa8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }" { (expression_statement "pbVar18 = *(byte **)(puVar16 + 0xa8);" (assignment_expression "pbVar18 = *(byte **)(puVar16 + 0xa8)" identifier = (pointer_expression "*(byte **)(puVar16 + 0xa8)" * (cast_expression "(byte **)(puVar16 + 0xa8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) ))))) ;) }) (else_clause "else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }" else (if_statement "if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }" if (parenthesized_expression "((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0)" ( (binary_expression "(*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20)" ( (binary_expression "*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20" (pointer_expression "*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2)" * (cast_expression "(byte *)(iVar17 + 1 + (uint)param_10[1] * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 1 + (uint)param_10[1] * 2)" ( (binary_expression "iVar17 + 1 + (uint)param_10[1] * 2" (binary_expression "iVar17 + 1" identifier + number_literal) + (binary_expression "(uint)param_10[1] * 2" (cast_expression "(uint)param_10[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_10[1]" identifier [ number_literal ])) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }" { (do_statement "do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);" do (compound_statement "{\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            }" { (expression_statement "pbVar18 = pbVar18 + 1;" (assignment_expression "pbVar18 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) (if_statement "if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;" if (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == pbVar18)" ( (binary_expression "*(byte **)(puVar16 + 0xa8) == pbVar18" (pointer_expression "*(byte **)(puVar16 + 0xa8)" * (cast_expression "(byte **)(puVar16 + 0xa8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == identifier) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0)" ( (binary_expression "(*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20)" ( (binary_expression "*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20" (pointer_expression "*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2)" * (cast_expression "(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 1 + (uint)*pbVar18 * 2)" ( (binary_expression "iVar17 + 1 + (uint)*pbVar18 * 2" (binary_expression "iVar17 + 1" identifier + number_literal) + (binary_expression "(uint)*pbVar18 * 2" (binary_expression "(uint)*pbVar18" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) })))) (expression_statement "*(byte **)(puVar16 + 0xa4) = pbVar18;" (assignment_expression "*(byte **)(puVar16 + 0xa4) = pbVar18" (pointer_expression "*(byte **)(puVar16 + 0xa4)" * (cast_expression "(byte **)(puVar16 + 0xa4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa4)" ( (binary_expression "puVar16 + 0xa4" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar19 = *(uint *)(puVar16 + 0xc);" (assignment_expression "uVar19 = *(uint *)(puVar16 + 0xc)" identifier = (pointer_expression "*(uint *)(puVar16 + 0xc)" * (cast_expression "(uint *)(puVar16 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(puVar16 + 0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + 0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + 0x10)" * (cast_expression "(int **)(puVar16 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "cVar20 = uVar19 == 0xffffffff;" (assignment_expression "cVar20 = uVar19 == 0xffffffff" identifier = (binary_expression "uVar19 == 0xffffffff" identifier == number_literal)) ;) (expression_statement "bVar14 = param_3 != (int *)0x0 && (bool)cVar20;" (assignment_expression "bVar14 = param_3 != (int *)0x0 && (bool)cVar20" identifier = (binary_expression "param_3 != (int *)0x0 && (bool)cVar20" (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (cast_expression "(bool)cVar20" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "bVar13 = (bool)cVar20;" (assignment_expression "bVar13 = (bool)cVar20" identifier = (cast_expression "(bool)cVar20" ( (type_descriptor "bool" primitive_type) ) identifier)) ;) (if_statement "if (bVar14) goto LAB_0027bfff;" if (parenthesized_expression "(bVar14)" ( identifier )) (goto_statement "goto LAB_0027bfff;" goto statement_identifier ;)) (labeled_statement "LAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" statement_identifier : (expression_statement "bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" (assignment_expression "bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32]" identifier = (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) != number_literal) & (subscript_expression "puVar16[0x32]" identifier [ number_literal ]))) ;)) (if_statement "if (bVar7 != 0) goto LAB_0027c01c;" if (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0027c01c;" goto statement_identifier ;)) (labeled_statement "LAB_0027bfb1:\n          cVar21 = puVar16[0x32];" statement_identifier : (expression_statement "cVar21 = puVar16[0x32];" (assignment_expression "cVar21 = puVar16[0x32]" identifier = (subscript_expression "puVar16[0x32]" identifier [ number_literal ])) ;)) (labeled_statement "LAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }" statement_identifier : (if_statement "if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }" if (parenthesized_expression "((bool)cVar21 != bVar13)" ( (binary_expression "(bool)cVar21 != bVar13" (cast_expression "(bool)cVar21" ( (type_descriptor "bool" primitive_type) ) identifier) != identifier) )) (compound_statement "{\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }" { (do_statement "do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );" do (compound_statement "{\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            }" { (expression_statement "uVar10 = uVar19;" (assignment_expression "uVar10 = uVar19" identifier = identifier) ;) (if_statement "if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }" if (parenthesized_expression "((param_3 == (int *)0x0) || (cVar20 == '\0'))" ( (binary_expression "(param_3 == (int *)0x0) || (cVar20 == '\0')" (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(cVar20 == '\0')" ( (binary_expression "cVar20 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }" { (labeled_statement "LAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;" statement_identifier : (if_statement "if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;" if (parenthesized_expression "((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0)" ( (binary_expression "(*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0" (parenthesized_expression "(*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20)" ( (binary_expression "*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20" (pointer_expression "*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)" * (cast_expression "(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)" ( (binary_expression "*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2" (binary_expression "*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1" (pointer_expression "*(int *)(*(int *)(puVar16 + 0x10) + 0x18)" * (cast_expression "(int *)(*(int *)(puVar16 + 0x10) + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x10) + 0x18)" ( (binary_expression "*(int *)(puVar16 + 0x10) + 0x18" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) + number_literal) )))) + number_literal) + (binary_expression "(uVar10 & 0xff) * 2" (parenthesized_expression "(uVar10 & 0xff)" ( (binary_expression "uVar10 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;))) (expression_statement "pbVar18 = (byte *)param_3[2];" (assignment_expression "pbVar18 = (byte *)param_3[2]" identifier = (cast_expression "(byte *)param_3[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;" if (parenthesized_expression "(pbVar18 < (byte *)param_3[3])" ( (binary_expression "pbVar18 < (byte *)param_3[3]" identifier < (cast_expression "(byte *)param_3[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0027bfe5;" goto statement_identifier ;)) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x28)" identifier = (pointer_expression "*(code **)(iVar17 + 0x28)" * (cast_expression "(code **)(iVar17 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x28)" ( (binary_expression "iVar17 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c0e9" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }" else (compound_statement "{\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }" { (expression_statement "pbVar18 = (byte *)param_3[2];" (assignment_expression "pbVar18 = (byte *)param_3[2]" identifier = (cast_expression "(byte *)param_3[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) (if_statement "if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }" if (parenthesized_expression "((byte *)param_3[3] <= pbVar18)" ( (binary_expression "(byte *)param_3[3] <= pbVar18" (cast_expression "(byte *)param_3[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }" { (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c3ae" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar10 = (*pcVar2)();" (assignment_expression "uVar10 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }" if (parenthesized_expression "(uVar10 == 0xffffffff)" ( (binary_expression "uVar10 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                    param_3 = (int *)0x0;\n                  }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_0027bfc8;" goto statement_identifier ;) })) (expression_statement "piVar8 = *(int **)(puVar16 + 0x10);" (assignment_expression "piVar8 = *(int **)(puVar16 + 0x10)" identifier = (pointer_expression "*(int **)(puVar16 + 0x10)" * (cast_expression "(int **)(puVar16 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }" if (parenthesized_expression "((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0)" ( (binary_expression "(*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20)" ( (binary_expression "*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20" (pointer_expression "*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2)" * (cast_expression "(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8[6] + 1 + (uint)*pbVar18 * 2)" ( (binary_expression "piVar8[6] + 1 + (uint)*pbVar18 * 2" (binary_expression "piVar8[6] + 1" (subscript_expression "piVar8[6]" identifier [ number_literal ]) + number_literal) + (binary_expression "(uint)*pbVar18 * 2" (binary_expression "(uint)*pbVar18" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }" { (expression_statement "param_10 = *(byte **)(puVar16 + 0xa4);" (assignment_expression "param_10 = *(byte **)(puVar16 + 0xa4)" identifier = (pointer_expression "*(byte **)(puVar16 + 0xa4)" * (cast_expression "(byte **)(puVar16 + 0xa4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa4)" ( (binary_expression "puVar16 + 0xa4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0027bccc;" goto statement_identifier ;) })) (labeled_statement "LAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);" statement_identifier : (expression_statement "param_3[2] = (int)(pbVar18 + 1);" (assignment_expression "param_3[2] = (int)(pbVar18 + 1)" (subscript_expression "param_3[2]" identifier [ number_literal ]) = (cast_expression "(int)(pbVar18 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar18 + 1)" ( (binary_expression "pbVar18 + 1" identifier + number_literal) )))) ;)) }))) (expression_statement "uVar19 = 0xffffffff;" (assignment_expression "uVar19 = 0xffffffff" identifier = number_literal) ;) (expression_statement "cVar20 = true;" (assignment_expression "cVar20 = true" identifier = true) ;) (expression_statement "bVar14 = param_3 != (int *)0x0;" (assignment_expression "bVar14 = param_3 != (int *)0x0" identifier = (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "bVar13 = (bool)cVar20;" (assignment_expression "bVar13 = (bool)cVar20" identifier = (cast_expression "(bool)cVar20" ( (type_descriptor "bool" primitive_type) ) identifier)) ;) (if_statement "if (!bVar14) goto LAB_0027bfa2;" if (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) (goto_statement "goto LAB_0027bfa2;" goto statement_identifier ;)) (labeled_statement "LAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }" statement_identifier : (if_statement "if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }" if (parenthesized_expression "((uint)param_3[3] <= (uint)param_3[2])" ( (binary_expression "(uint)param_3[3] <= (uint)param_3[2]" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) )) (compound_statement "{\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }" { (expression_statement "puVar16[0xc] = cVar20;" (assignment_expression "puVar16[0xc] = cVar20" (subscript_expression "puVar16[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c30d;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c30d" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (if_statement "if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }" if (parenthesized_expression "(iVar17 == -1)" ( (binary_expression "iVar17 == -1" identifier == number_literal) )) (compound_statement "{\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar13 = bVar14;" (assignment_expression "bVar13 = bVar14" identifier = identifier) ;) })) (expression_statement "cVar20 = puVar16[0xc];" (assignment_expression "cVar20 = puVar16[0xc]" identifier = (subscript_expression "puVar16[0xc]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0027bfa2;" goto statement_identifier ;) }))) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" (assignment_expression "bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32]" identifier = (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) != number_literal) & (subscript_expression "puVar16[0x32]" identifier [ number_literal ]))) ;) (if_statement "if (bVar7 == 0) goto LAB_0027bfb1;" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0027bfb1;" goto statement_identifier ;)) (labeled_statement "LAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;" statement_identifier : (if_statement "if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;" if (parenthesized_expression "(*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))" ( (binary_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)" (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc)" * (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 8) + 0xc)" ( (binary_expression "*(int *)(puVar16 + 8) + 0xc" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + number_literal) )))) <= (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 8)" * (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 8) + 8)" ( (binary_expression "*(int *)(puVar16 + 8) + 8" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (goto_statement "goto LAB_0027c2c0;" goto statement_identifier ;))) (if_statement "if (bVar13 == false) break;" if (parenthesized_expression "(bVar13 == false)" ( (binary_expression "bVar13 == false" identifier == false) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "*(uint *)(puVar16 + 0xc) = uVar19;" (assignment_expression "*(uint *)(puVar16 + 0xc) = uVar19" (pointer_expression "*(uint *)(puVar16 + 0xc)" * (cast_expression "(uint *)(puVar16 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8 = *(int **)(puVar16 + 0x10);" (assignment_expression "piVar8 = *(int **)(puVar16 + 0x10)" identifier = (pointer_expression "*(int **)(puVar16 + 0x10)" * (cast_expression "(int **)(puVar16 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "param_10 = *(byte **)(puVar16 + 0xa4);" (assignment_expression "param_10 = *(byte **)(puVar16 + 0xa4)" identifier = (pointer_expression "*(byte **)(puVar16 + 0xa4)" * (cast_expression "(byte **)(puVar16 + 0xa4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa4)" ( (binary_expression "puVar16 + 0xa4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0027bccc;" goto statement_identifier ;) })) (if_statement "if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" if (parenthesized_expression "((param_3 == (int *)0x0) || (cVar20 == '\0'))" ( (binary_expression "(param_3 == (int *)0x0) || (cVar20 == '\0')" (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(cVar20 == '\0')" ( (binary_expression "cVar20 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n          cVar21 = puVar16[0xc];\n        }" { (expression_statement "cVar21 = puVar16[0xc];" (assignment_expression "cVar21 = puVar16[0xc]" identifier = (subscript_expression "puVar16[0xc]" identifier [ number_literal ])) ;) }) (else_clause "else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" else (if_statement "if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" if (parenthesized_expression "((char *)param_3[2] < (char *)param_3[3])" ( (binary_expression "(char *)param_3[2] < (char *)param_3[3]" (cast_expression "(char *)param_3[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_3[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          cVar21 = *(char *)param_3[2];\n        }" { (expression_statement "cVar21 = *(char *)param_3[2];" (assignment_expression "cVar21 = *(char *)param_3[2]" identifier = (pointer_expression "*(char *)param_3[2]" * (cast_expression "(char *)param_3[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" else (compound_statement "{\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" { (expression_statement "puVar16[0x10] = cVar20;" (assignment_expression "puVar16[0x10] = cVar20" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c4df;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c4df" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar11 = (*pcVar2)();" (assignment_expression "iVar11 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar20 = puVar16[0x10];" (assignment_expression "cVar20 = puVar16[0x10]" identifier = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;) (expression_statement "iVar17 = -1;" (assignment_expression "iVar17 = -1" identifier = number_literal) ;) (if_statement "if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }" if (parenthesized_expression "(iVar11 != -1)" ( (binary_expression "iVar11 != -1" identifier != number_literal) )) (compound_statement "{\n            iVar17 = iVar11;\n          }" { (expression_statement "iVar17 = iVar11;" (assignment_expression "iVar17 = iVar11" identifier = identifier) ;) })) (expression_statement "cVar21 = (char)iVar17;" (assignment_expression "cVar21 = (char)iVar17" identifier = (cast_expression "(char)iVar17" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }" if (parenthesized_expression "(iVar11 == -1)" ( (binary_expression "iVar11 == -1" identifier == number_literal) )) (compound_statement "{\n            param_3 = (int *)0x0;\n          }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }))))) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "puVar16[0x10] = cVar20;" (assignment_expression "puVar16[0x10] = cVar20" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)cVar21;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)cVar21" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x10);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x10)" identifier = (pointer_expression "*(code **)(iVar17 + 0x10)" * (cast_expression "(code **)(iVar17 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x10)" ( (binary_expression "iVar17 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bc5c" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar20 = (*pcVar2)();" (assignment_expression "cVar20 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)*param_10;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)*param_10" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)(char)*param_10" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_10" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_10" * identifier)))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x10);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x10)" identifier = (pointer_expression "*(code **)(iVar17 + 0x10)" * (cast_expression "(code **)(iVar17 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x10)" ( (binary_expression "iVar17 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bc6b" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar21 = (*pcVar2)();" (assignment_expression "cVar21 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }" if (parenthesized_expression "(cVar21 != cVar20)" ( (binary_expression "cVar21 != cVar20" identifier != identifier) )) (compound_statement "{\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }" { (if_statement "if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" if (parenthesized_expression "((param_3 == (int *)0x0) || (puVar16[0x10] == '\0'))" ( (binary_expression "(param_3 == (int *)0x0) || (puVar16[0x10] == '\0')" (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar16[0x10] == '\0')" ( (binary_expression "puVar16[0x10] == '\0'" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            cVar20 = puVar16[0xc];\n          }" { (expression_statement "cVar20 = puVar16[0xc];" (assignment_expression "cVar20 = puVar16[0xc]" identifier = (subscript_expression "puVar16[0xc]" identifier [ number_literal ])) ;) }) (else_clause "else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" else (if_statement "if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" if (parenthesized_expression "((char *)param_3[2] < (char *)param_3[3])" ( (binary_expression "(char *)param_3[2] < (char *)param_3[3]" (cast_expression "(char *)param_3[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_3[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n            cVar20 = *(char *)param_3[2];\n          }" { (expression_statement "cVar20 = *(char *)param_3[2];" (assignment_expression "cVar20 = *(char *)param_3[2]" identifier = (pointer_expression "*(char *)param_3[2]" * (cast_expression "(char *)param_3[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" else (compound_statement "{\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" { (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c50a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c50a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar11 = (*pcVar2)();" (assignment_expression "iVar11 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar17 = -1;" (assignment_expression "iVar17 = -1" identifier = number_literal) ;) (if_statement "if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }" if (parenthesized_expression "(iVar11 != -1)" ( (binary_expression "iVar11 != -1" identifier != number_literal) )) (compound_statement "{\n              iVar17 = iVar11;\n            }" { (expression_statement "iVar17 = iVar11;" (assignment_expression "iVar17 = iVar11" identifier = identifier) ;) })) (expression_statement "cVar20 = (char)iVar17;" (assignment_expression "cVar20 = (char)iVar17" identifier = (cast_expression "(char)iVar17" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }" if (parenthesized_expression "(iVar11 == -1)" ( (binary_expression "iVar11 == -1" identifier == number_literal) )) (compound_statement "{\n              param_3 = (int *)0x0;\n            }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }))))) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)cVar20;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)cVar20" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 8);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 8)" identifier = (pointer_expression "*(code **)(iVar17 + 8)" * (cast_expression "(code **)(iVar17 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bc95;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bc95" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar20 = (*pcVar2)();" (assignment_expression "cVar20 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)*param_10;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)*param_10" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)(char)*param_10" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_10" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_10" * identifier)))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 8);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 8)" identifier = (pointer_expression "*(code **)(iVar17 + 8)" * (cast_expression "(code **)(iVar17 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bca4;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bca4" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar21 = (*pcVar2)();" (assignment_expression "cVar21 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }" if (parenthesized_expression "(cVar21 != cVar20)" ( (binary_expression "cVar21 != cVar20" identifier != identifier) )) (compound_statement "{\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }" { (labeled_statement "LAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;" statement_identifier : (expression_statement "**(undefined4 **)(puVar16 + 0x9c) = 4;" (assignment_expression "**(undefined4 **)(puVar16 + 0x9c) = 4" (pointer_expression "**(undefined4 **)(puVar16 + 0x9c)" * (pointer_expression "*(undefined4 **)(puVar16 + 0x9c)" * (cast_expression "(undefined4 **)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) = number_literal) ;)) (break_statement "break;" break ;) })) })) (if_statement "if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }" if (parenthesized_expression "((uint)param_3[2] < (uint)param_3[3])" ( (binary_expression "(uint)param_3[2] < (uint)param_3[3]" (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          param_3[2] = param_3[2] + 1;\n        }" { (expression_statement "param_3[2] = param_3[2] + 1;" (assignment_expression "param_3[2] = param_3[2] + 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = (binary_expression "param_3[2] + 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }" else (compound_statement "{\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }" { (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x28)" identifier = (pointer_expression "*(code **)(iVar17 + 0x28)" * (cast_expression "(code **)(iVar17 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x28)" ( (binary_expression "iVar17 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c419;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c419" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_10 = param_10 + 1;" (assignment_expression "param_10 = param_10 + 1" identifier = (binary_expression "param_10 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_0027bccc:\n        puVar4 = puVar16;" statement_identifier : (expression_statement "puVar4 = puVar16;" (assignment_expression "puVar4 = puVar16" identifier = identifier) ;)) (if_statement "if (*(byte **)(puVar16 + 0xa8) == param_10) break;" if (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == param_10)" ( (binary_expression "*(byte **)(puVar16 + 0xa8) == param_10" (pointer_expression "*(byte **)(puVar16 + 0xa8)" * (cast_expression "(byte **)(puVar16 + 0xa8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }" else (compound_statement "{\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }" { (labeled_statement "LAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;" statement_identifier : (if_statement "if (bVar5 != 0x25) goto LAB_0027bc28;" if (parenthesized_expression "(bVar5 != 0x25)" ( (binary_expression "bVar5 != 0x25" identifier != number_literal) )) (goto_statement "goto LAB_0027bc28;" goto statement_identifier ;))) (expression_statement "*(byte **)(puVar16 + 0x28) = param_10 + 1;" (assignment_expression "*(byte **)(puVar16 + 0x28) = param_10 + 1" (pointer_expression "*(byte **)(puVar16 + 0x28)" * (cast_expression "(byte **)(puVar16 + 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) = (binary_expression "param_10 + 1" identifier + number_literal)) ;) (if_statement "if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;" if (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == param_10 + 1)" ( (binary_expression "*(byte **)(puVar16 + 0xa8) == param_10 + 1" (pointer_expression "*(byte **)(puVar16 + 0xa8)" * (cast_expression "(byte **)(puVar16 + 0xa8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == (binary_expression "param_10 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_0027c4c0;" goto statement_identifier ;)) (expression_statement "bVar7 = param_10[1];" (assignment_expression "bVar7 = param_10[1]" identifier = (subscript_expression "param_10[1]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(puVar16 + 0x2c) = (uint)bVar7;" (assignment_expression "*(uint *)(puVar16 + 0x2c) = (uint)bVar7" (pointer_expression "*(uint *)(puVar16 + 0x2c)" * (cast_expression "(uint *)(puVar16 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);" (assignment_expression "cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d)" identifier = (pointer_expression "*(char *)((int)piVar8 + bVar7 + 0x11d)" * (cast_expression "(char *)((int)piVar8 + bVar7 + 0x11d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + bVar7 + 0x11d)" ( (binary_expression "(int)piVar8 + bVar7 + 0x11d" (binary_expression "(int)piVar8 + bVar7" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))))) ;) (expression_statement "puVar16[0x10] = cVar20;" (assignment_expression "puVar16[0x10] = cVar20" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar12 = 0x25;" (assignment_expression "uVar12 = 0x25" identifier = number_literal) ;) (if_statement "if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }" if (parenthesized_expression "(cVar20 == '\0')" ( (binary_expression "cVar20 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }" { (expression_statement "pcVar2 = *(code **)(*piVar8 + 0x20);" (assignment_expression "pcVar2 = *(code **)(*piVar8 + 0x20)" identifier = (pointer_expression "*(code **)(*piVar8 + 0x20)" * (cast_expression "(code **)(*piVar8 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar8 + 0x20)" ( (binary_expression "*piVar8 + 0x20" (pointer_expression "*piVar8" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }" if (parenthesized_expression "(pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c))" ( (binary_expression "pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" identifier != (pointer_expression "*(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" * (cast_expression "(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + 0x14) + -0x24c)" ( (binary_expression "*(int *)(puVar16 + 0x14) + -0x24c" (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }" { (expression_statement "puVar16[0x10] = 0x25;" (assignment_expression "puVar16[0x10] = 0x25" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)bVar7;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)bVar7" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)(char)bVar7" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c3f8" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar7 = (*pcVar2)();" (assignment_expression "bVar7 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "uVar12 = puVar16[0x10];" (assignment_expression "uVar12 = puVar16[0x10]" identifier = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;) })) (if_statement "if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }" if (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )) (compound_statement "{\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }" { (expression_statement "puVar16[0x10] = bVar7;" (assignment_expression "puVar16[0x10] = bVar7" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;" (assignment_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7" (pointer_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" * (cast_expression "(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" ( (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d" (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x2c)" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(puVar16 + 0x2c)" * (cast_expression "(int *)(puVar16 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) ))))) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0027bdcc;" goto statement_identifier ;) })) (expression_statement "puVar16[0x10] = 0;" (assignment_expression "puVar16[0x10] = 0" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x3c) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x3c) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" * (cast_expression "(undefined4 *)(puVar16 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar7 = 0;" (assignment_expression "bVar7 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }" else (compound_statement "{\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }" { (labeled_statement "LAB_0027bdcc:\n          bVar7 = puVar16[0x10];" statement_identifier : (expression_statement "bVar7 = puVar16[0x10];" (assignment_expression "bVar7 = puVar16[0x10]" identifier = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;)) (if_statement "if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }" if (parenthesized_expression "((bVar7 == 0x45) || (bVar7 == 0x4f))" ( (binary_expression "(bVar7 == 0x45) || (bVar7 == 0x4f)" (parenthesized_expression "(bVar7 == 0x45)" ( (binary_expression "bVar7 == 0x45" identifier == number_literal) )) || (parenthesized_expression "(bVar7 == 0x4f)" ( (binary_expression "bVar7 == 0x4f" identifier == number_literal) ))) )) (compound_statement "{\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }" { (expression_statement "*(byte **)(puVar16 + 0x28) = param_10 + 2;" (assignment_expression "*(byte **)(puVar16 + 0x28) = param_10 + 2" (pointer_expression "*(byte **)(puVar16 + 0x28)" * (cast_expression "(byte **)(puVar16 + 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) = (binary_expression "param_10 + 2" identifier + number_literal)) ;) (if_statement "if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;" if (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == param_10 + 2)" ( (binary_expression "*(byte **)(puVar16 + 0xa8) == param_10 + 2" (pointer_expression "*(byte **)(puVar16 + 0xa8)" * (cast_expression "(byte **)(puVar16 + 0xa8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == (binary_expression "param_10 + 2" identifier + number_literal)) )) (goto_statement "goto LAB_0027c4c0;" goto statement_identifier ;)) (expression_statement "bVar5 = param_10[2];" (assignment_expression "bVar5 = param_10[2]" identifier = (subscript_expression "param_10[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(puVar16 + 0x2c) = (uint)bVar5;" (assignment_expression "*(uint *)(puVar16 + 0x2c) = (uint)bVar5" (pointer_expression "*(uint *)(puVar16 + 0x2c)" * (cast_expression "(uint *)(puVar16 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);" (assignment_expression "bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d)" identifier = (pointer_expression "*(byte *)((int)piVar8 + bVar5 + 0x11d)" * (cast_expression "(byte *)((int)piVar8 + bVar5 + 0x11d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + bVar5 + 0x11d)" ( (binary_expression "(int)piVar8 + bVar5 + 0x11d" (binary_expression "(int)piVar8 + bVar5" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];" (assignment_expression "*(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10]" (pointer_expression "*(int *)(puVar16 + 0x3c)" * (cast_expression "(int *)(puVar16 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) )))) = (cast_expression "(int)(char)puVar16[0x10]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)puVar16[0x10]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar16[0x10]" identifier [ number_literal ])))) ;) (if_statement "if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }" { (expression_statement "iVar17 = (int)(char)bVar5;" (assignment_expression "iVar17 = (int)(char)bVar5" identifier = (cast_expression "(int)(char)bVar5" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar5" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "pcVar2 = *(code **)(*piVar8 + 0x20);" (assignment_expression "pcVar2 = *(code **)(*piVar8 + 0x20)" identifier = (pointer_expression "*(code **)(*piVar8 + 0x20)" * (cast_expression "(code **)(*piVar8 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar8 + 0x20)" ( (binary_expression "*piVar8 + 0x20" (pointer_expression "*piVar8" * identifier) + number_literal) ))))) ;) (expression_statement "bVar7 = bVar5;" (assignment_expression "bVar7 = bVar5" identifier = identifier) ;) (if_statement "if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }" if (parenthesized_expression "(pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c))" ( (binary_expression "pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" identifier != (pointer_expression "*(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" * (cast_expression "(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + 0x14) + -0x24c)" ( (binary_expression "*(int *)(puVar16 + 0x14) + -0x24c" (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }" { (expression_statement "puVar16[0x33] = uVar12;" (assignment_expression "puVar16[0x33] = uVar12" (subscript_expression "puVar16[0x33]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = iVar17;" (assignment_expression "*(int *)(puVar16 + -0xc) = iVar17" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c4a2" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar7 = (*pcVar2)();" (assignment_expression "bVar7 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "uVar12 = puVar16[0x33];" (assignment_expression "uVar12 = puVar16[0x33]" identifier = (subscript_expression "puVar16[0x33]" identifier [ number_literal ])) ;) (expression_statement "iVar17 = (int)(char)bVar7;" (assignment_expression "iVar17 = (int)(char)bVar7" identifier = (cast_expression "(int)(char)bVar7" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier))) ;) })) (if_statement "if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }" if (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )) (compound_statement "{\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }" { (expression_statement "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;" (assignment_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7" (pointer_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" * (cast_expression "(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" ( (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d" (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x2c)" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(puVar16 + 0x2c)" * (cast_expression "(int *)(puVar16 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) ))))) + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\n              iVar17 = (int)(char)bVar7;\n            }" else (compound_statement "{\n              iVar17 = (int)(char)bVar7;\n            }" { (expression_statement "iVar17 = (int)(char)bVar7;" (assignment_expression "iVar17 = (int)(char)bVar7" identifier = (cast_expression "(int)(char)bVar7" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier))) ;) }))) }) (else_clause "else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }" else (compound_statement "{\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }" { (expression_statement "*(undefined4 *)(puVar16 + 0x3c) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x3c) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" * (cast_expression "(undefined4 *)(puVar16 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (int)(char)bVar7;" (assignment_expression "iVar17 = (int)(char)bVar7" identifier = (cast_expression "(int)(char)bVar7" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "puVar16[0x10] = 0;" (assignment_expression "puVar16[0x10] = 0" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = number_literal) ;) }))) }))) (expression_statement "puVar16[0x33] = uVar12;" (assignment_expression "puVar16[0x33] = uVar12" (subscript_expression "puVar16[0x33]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16[0x2c] = bVar7;" (assignment_expression "puVar16[0x2c] = bVar7" (subscript_expression "puVar16[0x2c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);" (assignment_expression "pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20)" identifier = (pointer_expression "*(code **)(**(int **)(puVar16 + 0x84) + 0x20)" * (cast_expression "(code **)(**(int **)(puVar16 + 0x84) + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(puVar16 + 0x84) + 0x20)" ( (binary_expression "**(int **)(puVar16 + 0x84) + 0x20" (pointer_expression "**(int **)(puVar16 + 0x84)" * (pointer_expression "*(int **)(puVar16 + 0x84)" * (cast_expression "(int **)(puVar16 + 0x84)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }" if (parenthesized_expression "(pcVar2 == *(code **)(puVar16 + 0x38))" ( (binary_expression "pcVar2 == *(code **)(puVar16 + 0x38)" identifier == (pointer_expression "*(code **)(puVar16 + 0x38)" * (cast_expression "(code **)(puVar16 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) )) (compound_statement "{\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }" { (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x40)" * (cast_expression "(undefined4 *)(puVar16 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x40)" ( (binary_expression "puVar16 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27be21;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27be21" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar9 = (int *)FUN_00212050();" (assignment_expression "piVar9 = (int *)FUN_00212050()" identifier = (cast_expression "(int *)FUN_00212050()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00212050()" identifier (argument_list "()" ( ))))) ;) (expression_statement "uVar12 = puVar16[0x2c];" (assignment_expression "uVar12 = puVar16[0x2c]" identifier = (subscript_expression "puVar16[0x2c]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar16[0x33];" (assignment_expression "uVar6 = puVar16[0x33]" identifier = (subscript_expression "puVar16[0x33]" identifier [ number_literal ])) ;) (expression_statement "**(undefined4 **)(puVar16 + 0x9c) = 0;" (assignment_expression "**(undefined4 **)(puVar16 + 0x9c) = 0" (pointer_expression "**(undefined4 **)(puVar16 + 0x9c)" * (pointer_expression "*(undefined4 **)(puVar16 + 0x9c)" * (cast_expression "(undefined4 **)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) = number_literal) ;) (if_statement "if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }" if (parenthesized_expression "((char)piVar9[7] == '\0')" ( (binary_expression "(char)piVar9[7] == '\0'" (cast_expression "(char)piVar9[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar9[7]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }" { (expression_statement "puVar16[0x33] = uVar6;" (assignment_expression "puVar16[0x33] = uVar6" (subscript_expression "puVar16[0x33]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16[0x2c] = uVar12;" (assignment_expression "puVar16[0x2c] = uVar12" (subscript_expression "puVar16[0x2c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar9;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar9" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c1b5" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00242f30();" (call_expression "FUN_00242f30()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar12 = puVar16[0x2c];" (assignment_expression "uVar12 = puVar16[0x2c]" identifier = (subscript_expression "puVar16[0x2c]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar16[0x33];" (assignment_expression "uVar6 = puVar16[0x33]" identifier = (subscript_expression "puVar16[0x33]" identifier [ number_literal ])) ;) (expression_statement "pcVar2 = *(code **)(*piVar9 + 0x18);" (assignment_expression "pcVar2 = *(code **)(*piVar9 + 0x18)" identifier = (pointer_expression "*(code **)(*piVar9 + 0x18)" * (cast_expression "(code **)(*piVar9 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar9 + 0x18)" ( (binary_expression "*piVar9 + 0x18" (pointer_expression "*piVar9" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }" if (parenthesized_expression "(pcVar2 != *(code **)(puVar16 + 0x44))" ( (binary_expression "pcVar2 != *(code **)(puVar16 + 0x44)" identifier != (pointer_expression "*(code **)(puVar16 + 0x44)" * (cast_expression "(code **)(puVar16 + 0x44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) )) (compound_statement "{\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }" { (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 0x25;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 0x25" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar9;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar9" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c1da;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c1da" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar6 = (*pcVar2)();" (assignment_expression "uVar6 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "uVar12 = puVar16[0x2c];" (assignment_expression "uVar12 = puVar16[0x2c]" identifier = (subscript_expression "puVar16[0x2c]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }" else (compound_statement "{\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }" { (expression_statement "uVar6 = *(undefined1 *)((int)piVar9 + 0x42);" (assignment_expression "uVar6 = *(undefined1 *)((int)piVar9 + 0x42)" identifier = (pointer_expression "*(undefined1 *)((int)piVar9 + 0x42)" * (cast_expression "(undefined1 *)((int)piVar9 + 0x42)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 + 0x42)" ( (binary_expression "(int)piVar9 + 0x42" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (expression_statement "puVar16[0x5c] = uVar6;" (assignment_expression "puVar16[0x5c] = uVar6" (subscript_expression "puVar16[0x5c]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }" if (parenthesized_expression "(puVar16[0x10] == '\0')" ( (binary_expression "puVar16[0x10] == '\0'" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }" { (expression_statement "puVar16[0x5d] = uVar12;" (assignment_expression "puVar16[0x5d] = uVar12" (subscript_expression "puVar16[0x5d]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16[0x5e] = 0;" (assignment_expression "puVar16[0x5e] = 0" (subscript_expression "puVar16[0x5e]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }" else (compound_statement "{\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }" { (expression_statement "puVar16[0x5e] = uVar12;" (assignment_expression "puVar16[0x5e] = uVar12" (subscript_expression "puVar16[0x5e]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16[0x5f] = 0;" (assignment_expression "puVar16[0x5f] = 0" (subscript_expression "puVar16[0x5f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar16[0x5d] = puVar16[0x10];" (assignment_expression "puVar16[0x5d] = puVar16[0x10]" (subscript_expression "puVar16[0x5d]" identifier [ number_literal ]) = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;) }))) (expression_statement "*(int **)(puVar16 + 0x18) = param_3;" (assignment_expression "*(int **)(puVar16 + 0x18) = param_3" (pointer_expression "*(int **)(puVar16 + 0x18)" * (cast_expression "(int **)(puVar16 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x18)" ( (binary_expression "puVar16 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);" (assignment_expression "*(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc)" (pointer_expression "*(undefined4 *)(puVar16 + 0x1c)" * (cast_expression "(undefined4 *)(puVar16 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);" (assignment_expression "*(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8)" (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" * (cast_expression "(undefined4 *)(puVar16 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);" (assignment_expression "*(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34)" (pointer_expression "*(undefined4 *)(puVar16 + 0x24)" * (cast_expression "(undefined4 *)(puVar16 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x34)" * (cast_expression "(undefined4 *)(puVar16 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;" (assignment_expression "*(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c" (pointer_expression "*(undefined1 **)(puVar16 + -0xc)" * (cast_expression "(undefined1 **)(puVar16 + -0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x5c" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0xa0)" * (cast_expression "(undefined4 *)(puVar16 + 0xa0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xa0)" ( (binary_expression "puVar16 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x9c)" * (cast_expression "(undefined4 *)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x98)" * (cast_expression "(undefined4 *)(puVar16 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x98)" ( (binary_expression "puVar16 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" * (cast_expression "(undefined4 *)(puVar16 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x24)" * (cast_expression "(undefined4 *)(puVar16 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" * (cast_expression "(undefined4 *)(puVar16 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" * (cast_expression "(undefined4 *)(puVar16 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x1c)" * (cast_expression "(undefined4 *)(puVar16 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18)" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" * (cast_expression "(undefined4 *)(puVar16 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x18)" * (cast_expression "(undefined4 *)(puVar16 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x18)" ( (binary_expression "puVar16 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x2c)" * (cast_expression "(undefined4 *)(puVar16 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x2c)" ( (binary_expression "puVar16 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x84)" * (cast_expression "(undefined4 *)(puVar16 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;" (assignment_expression "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48" (pointer_expression "*(undefined1 **)(puVar16 + -0x30)" * (cast_expression "(undefined1 **)(puVar16 + -0x30)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x30)" ( (binary_expression "puVar16 + -0x30" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x48" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x34) = 0x27bec1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = 0x27bec1" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0027a830();" (call_expression "FUN_0027a830()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar17 = *(int *)(puVar16 + 0x48);" (assignment_expression "iVar17 = *(int *)(puVar16 + 0x48)" identifier = (pointer_expression "*(int *)(puVar16 + 0x48)" * (cast_expression "(int *)(puVar16 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x48)" ( (binary_expression "puVar16 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "param_3 = *(int **)(puVar16 + 0x44);" (assignment_expression "param_3 = *(int **)(puVar16 + 0x44)" identifier = (pointer_expression "*(int **)(puVar16 + 0x44)" * (cast_expression "(int **)(puVar16 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 0x18) = iVar17;" (assignment_expression "*(int *)(puVar16 + 0x18) = iVar17" (pointer_expression "*(int *)(puVar16 + 0x18)" * (cast_expression "(int *)(puVar16 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x18)" ( (binary_expression "puVar16 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + 8) = iVar17;" (assignment_expression "*(int *)(puVar16 + 8) = iVar17" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + 0x14) = param_3;" (assignment_expression "*(int **)(puVar16 + 0x14) = param_3" (pointer_expression "*(int **)(puVar16 + 0x14)" * (cast_expression "(int **)(puVar16 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "bVar13 = param_3 != (int *)0x0 && iVar17 == -1;" (assignment_expression "bVar13 = param_3 != (int *)0x0 && iVar17 == -1" identifier = (binary_expression "param_3 != (int *)0x0 && iVar17 == -1" (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "iVar17 == -1" identifier == number_literal))) ;) (expression_statement "cVar20 = iVar17 == -1;" (assignment_expression "cVar20 = iVar17 == -1" identifier = (binary_expression "iVar17 == -1" identifier == number_literal)) ;) (if_statement "if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }" if (parenthesized_expression "((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2]))" ( (binary_expression "(bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])" (parenthesized_expression "(bVar13)" ( identifier )) && (parenthesized_expression "(cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])" ( (comma_expression "cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2]" (assignment_expression "cVar20 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) , (binary_expression "(uint)param_3[3] <= (uint)param_3[2]" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }" { (expression_statement "puVar16[0xc] = bVar13;" (assignment_expression "puVar16[0xc] = bVar13" (subscript_expression "puVar16[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" * (cast_expression "(undefined4 *)(puVar16 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = 0x27c37e;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = 0x27c37e" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }" if (parenthesized_expression "(iVar17 == -1)" ( (binary_expression "iVar17 == -1" identifier == number_literal) )) (compound_statement "{\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "cVar20 = puVar16[0xc];" (assignment_expression "cVar20 = puVar16[0xc]" identifier = (subscript_expression "puVar16[0xc]" identifier [ number_literal ])) ;) })) })) (if_statement "if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }" if (parenthesized_expression "((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0'))" ( (binary_expression "(*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')" (parenthesized_expression "(*(int *)(puVar16 + 4) == 0)" ( (binary_expression "*(int *)(puVar16 + 4) == 0" (pointer_expression "*(int *)(puVar16 + 4)" * (cast_expression "(int *)(puVar16 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 4)" ( (binary_expression "puVar16 + 4" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(puVar16[0x2e] == '\0')" ( (binary_expression "puVar16[0x2e] == '\0'" (subscript_expression "puVar16[0x2e]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            cVar21 = puVar16[0x2e];\n          }" { (expression_statement "cVar21 = puVar16[0x2e];" (assignment_expression "cVar21 = puVar16[0x2e]" identifier = (subscript_expression "puVar16[0x2e]" identifier [ number_literal ])) ;) }) (else_clause "else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }" else (compound_statement "{\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }" { (expression_statement "cVar21 = '\0';" (assignment_expression "cVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }" if (parenthesized_expression "(*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8))" ( (binary_expression "*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)" (pointer_expression "*(uint *)(*(int *)(puVar16 + 4) + 0xc)" * (cast_expression "(uint *)(*(int *)(puVar16 + 4) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 4) + 0xc)" ( (binary_expression "*(int *)(puVar16 + 4) + 0xc" (pointer_expression "*(int *)(puVar16 + 4)" * (cast_expression "(int *)(puVar16 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 4)" ( (binary_expression "puVar16 + 4" identifier + number_literal) )))) + number_literal) )))) <= (pointer_expression "*(uint *)(*(int *)(puVar16 + 4) + 8)" * (cast_expression "(uint *)(*(int *)(puVar16 + 4) + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 4) + 8)" ( (binary_expression "*(int *)(puVar16 + 4) + 8" (pointer_expression "*(int *)(puVar16 + 4)" * (cast_expression "(int *)(puVar16 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 4)" ( (binary_expression "puVar16 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }" { (expression_statement "iVar17 = **(int **)(puVar16 + 4);" (assignment_expression "iVar17 = **(int **)(puVar16 + 4)" identifier = (pointer_expression "**(int **)(puVar16 + 4)" * (pointer_expression "*(int **)(puVar16 + 4)" * (cast_expression "(int **)(puVar16 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 4)" ( (binary_expression "puVar16 + 4" identifier + number_literal) )))))) ;) (expression_statement "*(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);" (assignment_expression "*(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4)" (pointer_expression "*(int **)(puVar16 + -0x14)" * (cast_expression "(int **)(puVar16 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(int **)(puVar16 + 4)" * (cast_expression "(int **)(puVar16 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 4)" ( (binary_expression "puVar16 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = 0x27c34f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = 0x27c34f" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar21 = iVar17 == -1;" (assignment_expression "cVar21 = iVar17 == -1" identifier = (binary_expression "iVar17 == -1" identifier == number_literal)) ;) })) }))) (if_statement "if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }" if (parenthesized_expression "(cVar21 == cVar20)" ( (binary_expression "cVar21 == cVar20" identifier == identifier) )) (compound_statement "{\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }" { (expression_statement "**(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;" (assignment_expression "**(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2" (pointer_expression "**(uint **)(puVar16 + 0x98)" * (pointer_expression "*(uint **)(puVar16 + 0x98)" * (cast_expression "(uint **)(puVar16 + 0x98)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x98)" ( (binary_expression "puVar16 + 0x98" identifier + number_literal) ))))) = (binary_expression "**(uint **)(puVar16 + 0x98) | 2" (pointer_expression "**(uint **)(puVar16 + 0x98)" * (pointer_expression "*(uint **)(puVar16 + 0x98)" * (cast_expression "(uint **)(puVar16 + 0x98)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x98)" ( (binary_expression "puVar16 + 0x98" identifier + number_literal) ))))) | number_literal)) ;) })) }) (else_clause "else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }" else (compound_statement "{\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }" { (expression_statement "*(int **)(puVar16 + 0x88) = param_3;" (assignment_expression "*(int **)(puVar16 + 0x88) = param_3" (pointer_expression "*(int **)(puVar16 + 0x88)" * (cast_expression "(int **)(puVar16 + 0x88)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x88)" ( (binary_expression "puVar16 + 0x88" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);" (assignment_expression "*(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc)" (pointer_expression "*(undefined4 *)(puVar16 + 0x8c)" * (cast_expression "(undefined4 *)(puVar16 + 0x8c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x8c)" ( (binary_expression "puVar16 + 0x8c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);" (assignment_expression "*(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34)" (pointer_expression "*(undefined4 *)(puVar16 + 0x94)" * (cast_expression "(undefined4 *)(puVar16 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x94)" ( (binary_expression "puVar16 + 0x94" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x34)" * (cast_expression "(undefined4 *)(puVar16 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);" (assignment_expression "*(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8)" (pointer_expression "*(undefined4 *)(puVar16 + 0x90)" * (cast_expression "(undefined4 *)(puVar16 + 0x90)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x90)" ( (binary_expression "puVar16 + 0x90" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" * (cast_expression "(undefined4 *)(puVar16 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0xc) = iVar17;" (assignment_expression "*(int *)(puVar16 + -0xc) = iVar17" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0xa0)" * (cast_expression "(undefined4 *)(puVar16 + 0xa0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xa0)" ( (binary_expression "puVar16 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x9c)" * (cast_expression "(undefined4 *)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x98)" * (cast_expression "(undefined4 *)(puVar16 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x98)" ( (binary_expression "puVar16 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" * (cast_expression "(undefined4 *)(puVar16 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x94)" * (cast_expression "(undefined4 *)(puVar16 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x94)" ( (binary_expression "puVar16 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" * (cast_expression "(undefined4 *)(puVar16 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x90)" * (cast_expression "(undefined4 *)(puVar16 + 0x90)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x90)" ( (binary_expression "puVar16 + 0x90" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x8c)" * (cast_expression "(undefined4 *)(puVar16 + 0x8c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x8c)" ( (binary_expression "puVar16 + 0x8c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88)" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" * (cast_expression "(undefined4 *)(puVar16 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x88)" * (cast_expression "(undefined4 *)(puVar16 + 0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x88)" ( (binary_expression "puVar16 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x2c)" * (cast_expression "(undefined4 *)(puVar16 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x2c)" ( (binary_expression "puVar16 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x84)" * (cast_expression "(undefined4 *)(puVar16 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;" (assignment_expression "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48" (pointer_expression "*(undefined1 **)(puVar16 + -0x30)" * (cast_expression "(undefined1 **)(puVar16 + -0x30)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x30)" ( (binary_expression "puVar16 + -0x30" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x48" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x34) = 0x27c28f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = 0x27c28f" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);" (assignment_expression "*(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44)" (pointer_expression "*(undefined4 *)(puVar16 + 0x84)" * (cast_expression "(undefined4 *)(puVar16 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x44)" * (cast_expression "(undefined4 *)(puVar16 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "param_3 = *(int **)(puVar16 + 0x84);" (assignment_expression "param_3 = *(int **)(puVar16 + 0x84)" identifier = (pointer_expression "*(int **)(puVar16 + 0x84)" * (cast_expression "(int **)(puVar16 + 0x84)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "*(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48)" (pointer_expression "*(undefined4 *)(puVar16 + 0x88)" * (cast_expression "(undefined4 *)(puVar16 + 0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x88)" ( (binary_expression "puVar16 + 0x88" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" * (cast_expression "(undefined4 *)(puVar16 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x48)" ( (binary_expression "puVar16 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);" (assignment_expression "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88)" (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x88)" * (cast_expression "(undefined4 *)(puVar16 + 0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x88)" ( (binary_expression "puVar16 + 0x88" identifier + number_literal) ))))) ;) }))) (expression_statement "puVar15 = puVar16 + -4;" (assignment_expression "puVar15 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (expression_statement "param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);" (assignment_expression "param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1)" identifier = (cast_expression "(byte *)(*(int *)(puVar16 + 0x24) + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 1)" ( (binary_expression "*(int *)(puVar16 + 0x24) + 1" (pointer_expression "*(int *)(puVar16 + 0x24)" * (cast_expression "(int *)(puVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "puVar1 = (undefined4 *)(puVar16 + 0xa4);" (assignment_expression "puVar1 = (undefined4 *)(puVar16 + 0xa4)" identifier = (cast_expression "(undefined4 *)(puVar16 + 0xa4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xa4)" ( (binary_expression "puVar16 + 0xa4" identifier + number_literal) )))) ;) (expression_statement "puVar16 = puVar16 + -4;" (assignment_expression "puVar16 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (expression_statement "puVar4 = puVar15;" (assignment_expression "puVar4 = puVar15" identifier = identifier) ;) (if_statement "if ((byte *)*puVar1 == param_10) break;" if (parenthesized_expression "((byte *)*puVar1 == param_10)" ( (binary_expression "(byte *)*puVar1 == param_10" (cast_expression "(byte *)*puVar1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) == identifier) )) (break_statement "break;" break ;)) }))) (expression_statement "puVar16 = puVar4;" (assignment_expression "puVar16 = puVar4" identifier = identifier) ;) }) while (parenthesized_expression "(**(int **)(puVar16 + 0x9c) == 0)" ( (binary_expression "**(int **)(puVar16 + 0x9c) == 0" (pointer_expression "**(int **)(puVar16 + 0x9c)" * (pointer_expression "*(int **)(puVar16 + 0x9c)" * (cast_expression "(int **)(puVar16 + 0x9c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) == number_literal) )) ;) })) (expression_statement "piVar8 = *(int **)(puVar16 + 0x80);" (assignment_expression "piVar8 = *(int **)(puVar16 + 0x80)" identifier = (pointer_expression "*(int **)(puVar16 + 0x80)" * (cast_expression "(int **)(puVar16 + 0x80)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x80)" ( (binary_expression "puVar16 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = *(int *)(puVar16 + 0xc);" (assignment_expression "iVar17 = *(int *)(puVar16 + 0xc)" identifier = (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*piVar8 = (int)param_3;" (assignment_expression "*piVar8 = (int)param_3" (pointer_expression "*piVar8" * identifier) = (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar8[1] = iVar17;" (assignment_expression "piVar8[1] = iVar17" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) (labeled_statement "LAB_0027c2c0:\n  puVar16[0x28] = cVar20;" statement_identifier : (expression_statement "puVar16[0x28] = cVar20;" (assignment_expression "puVar16[0x28] = cVar20" (subscript_expression "puVar16[0x28]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "puVar16[0xc] = bVar7;" (assignment_expression "puVar16[0xc] = bVar7" (subscript_expression "puVar16[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar8 = *(int **)(puVar16 + 8);" (assignment_expression "piVar8 = *(int **)(puVar16 + 8)" identifier = (pointer_expression "*(int **)(puVar16 + 8)" * (cast_expression "(int **)(puVar16 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c2d5" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar21 = puVar16[0xc];" (assignment_expression "cVar21 = puVar16[0xc]" identifier = (subscript_expression "puVar16[0xc]" identifier [ number_literal ])) ;) (expression_statement "piVar9 = (int *)0x0;" (assignment_expression "piVar9 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar17 != -1) {\n    cVar21 = '\0';\n    piVar9 = piVar8;\n  }" if (parenthesized_expression "(iVar17 != -1)" ( (binary_expression "iVar17 != -1" identifier != number_literal) )) (compound_statement "{\n    cVar21 = '\0';\n    piVar9 = piVar8;\n  }" { (expression_statement "cVar21 = '\0';" (assignment_expression "cVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "piVar9 = piVar8;" (assignment_expression "piVar9 = piVar8" identifier = identifier) ;) })) (expression_statement "cVar20 = puVar16[0x28];" (assignment_expression "cVar20 = puVar16[0x28]" identifier = (subscript_expression "puVar16[0x28]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(puVar16 + 8) = piVar9;" (assignment_expression "*(int **)(puVar16 + 8) = piVar9" (pointer_expression "*(int **)(puVar16 + 8)" * (cast_expression "(int **)(puVar16 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0027bfb6;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> >\n   >::get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char,\n   std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, tm*, char const*, char const*)\n   const */\n\nvoid std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::get\n               (undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n               undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n               ctype *param_10,ctype *param_11)\n\n{\n  undefined1 uVar1;\n  code *pcVar2;\n  int *piVar3;\n  int *piVar4;\n  ctype cVar5;\n  ctype cVar6;\n  ctype *pcVar7;\n  ctype *pcVar8;\n  byte *pbVar9;\n  uint uVar10;\n  int iVar11;\n  undefined1 uVar12;\n  byte bVar13;\n  bool bVar14;\n  bool bVar15;\n  undefined1 *puVar16;\n  int iVar17;\n  uint uVar18;\n  char cVar19;\n  char cVar20;\n  int aiStackY_b0 [9];\n  undefined1 auStack_7c [8];\n  int local_74;\n  uint local_70;\n  ctype local_6c [4];\n  undefined **local_68;\n  int local_64 [4];\n  byte local_54 [4];\n  ctype local_50 [6];\n  bool local_4a;\n  ctype local_49;\n  int local_48;\n  undefined **local_44;\n  int local_40;\n  locale *local_3c;\n  undefined **local_38;\n  int local_34 [5];\n  ctype local_20 [16];\n  \n  local_68 = &_GLOBAL_OFFSET_TABLE_;\n  local_70 = param_4;\n  local_74 = param_5;\n  local_48 = param_6;\n  local_3c = (locale *)(param_7 + 0x6c);\n  pcVar7 = use_facet<std::ctype<char>>(local_3c);\n  puVar16 = auStack_7c;\n  *param_8 = 0;\n  if (param_10 != param_11) {\n    local_4a = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar19 = *(int *)(puVar16 + 0xc) == -1;\n      bVar14 = param_3 != (int *)0x0 && (bool)cVar19;\n      puVar16[0x10] = bVar14;\n      if (bVar14) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar19 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar19;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar20 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar20 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar19;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar3 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar3;\n          *(int **)(puVar16 + -0x10) = piVar3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n          piVar4 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar20 = '\0';\n            piVar4 = piVar3;\n          }\n          cVar19 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar4;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      cVar6 = *param_10;\n      cVar5 = pcVar7[(byte)cVar6 + 0x11d];\n      *(uint *)(puVar16 + 0x10) = (uint)(byte)cVar6;\n      if (cVar5 == (ctype)0x0) {\n        pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n        cVar5 = cVar6;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar19;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          cVar5 = (ctype)(*pcVar2)();\n          cVar19 = puVar16[0x28];\n        }\n        if (cVar5 != (ctype)0x0) {\n          pcVar7[*(int *)(puVar16 + 0x10) + 0x11d] = cVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = *(int *)(pcVar7 + 0x18);\n        if ((*(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2) & 0x20) != 0) {\n          pcVar8 = param_10 + 1;\n          if (*(ctype **)(puVar16 + 0xa8) == pcVar8) {\n            pcVar8 = *(ctype **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);\n          }\n          *(ctype **)(puVar16 + 0xa4) = pcVar8;\n          uVar18 = *(uint *)(puVar16 + 0xc);\n          *(ctype **)(puVar16 + 0x10) = pcVar7;\n          cVar19 = uVar18 == 0xffffffff;\n          bVar15 = param_3 != (int *)0x0 && (bool)cVar19;\n          bVar14 = (bool)cVar19;\n          if (bVar15) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar13 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar20 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar20 != bVar14) {\n            do {\n              uVar10 = uVar18;\n              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }\n              uVar18 = 0xffffffff;\n              cVar19 = true;\n              bVar15 = param_3 != (int *)0x0;\n              bVar14 = (bool)cVar19;\n              if (!bVar15) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar14 = false;\n              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar13 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar14 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar18;\n          pcVar7 = *(ctype **)(puVar16 + 0x10);\n          param_10 = *(ctype **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\n          cVar20 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar20 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar19 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar20 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *(int *)pcVar7;\n        puVar16[0x10] = cVar19;\n        *(int *)(puVar16 + -0xc) = (int)cVar20;\n        *(ctype **)(puVar16 + -0x10) = pcVar7;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar19 = (*pcVar2)();\n        iVar17 = *(int *)pcVar7;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(ctype **)(puVar16 + -0x10) = pcVar7;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar20 = (*pcVar2)();\n        if (cVar20 != cVar19) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar19 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar19 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar19 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)cVar19;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar19 = (*pcVar2)();\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar20 = (*pcVar2)();\n          if (cVar20 != cVar19) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (cVar5 != (ctype)0x25) goto LAB_0027bc28;\n        *(ctype **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(ctype **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        cVar6 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar6;\n        cVar5 = pcVar7[(byte)cVar6 + 0x11d];\n        *(ctype *)(puVar16 + 0x10) = cVar5;\n        uVar12 = 0x25;\n        if (cVar5 == (ctype)0x0) {\n          pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n            *(ctype **)(puVar16 + -0x10) = pcVar7;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            cVar6 = (ctype)(*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (cVar6 != (ctype)0x0) {\n            *(ctype *)(puVar16 + 0x10) = cVar6;\n            pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          cVar6 = (ctype)0x0;\n        }\n        else {\nLAB_0027bdcc:\n          cVar6 = *(ctype *)(puVar16 + 0x10);\n          if ((cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f)) {\n            *(ctype **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            cVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;\n            cVar6 = pcVar7[(byte)cVar5 + 0x11d];\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (cVar6 == (ctype)0x0) {\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }\n            else {\n              iVar17 = (int)(char)cVar6;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)cVar6;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        *(ctype *)(puVar16 + 0x2c) = cVar6;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          pcVar8 = use_facet<std::ctype<char>>(*(locale **)(puVar16 + -0x10));\n          uVar12 = puVar16[0x2c];\n          uVar1 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if (pcVar8[0x1c] == (ctype)0x0) {\n            puVar16[0x33] = uVar1;\n            puVar16[0x2c] = uVar12;\n            *(ctype **)(puVar16 + -0x10) = pcVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10));\n            uVar12 = puVar16[0x2c];\n            cVar6 = *(ctype *)(puVar16 + 0x33);\n            pcVar2 = *(code **)(*(int *)pcVar8 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(ctype **)(puVar16 + -0x10) = pcVar8;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              cVar6 = (ctype)(*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            cVar6 = pcVar8[0x42];\n          }\n          *(ctype *)(puVar16 + 0x5c) = cVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          _M_extract_via_format();\n          iVar17 = *(int *)(puVar16 + 0x4c);\n          param_3 = *(int **)(puVar16 + 0x48);\n          *(int *)(puVar16 + 0x1c) = iVar17;\n          *(int *)(puVar16 + 0xc) = iVar17;\n          *(int **)(puVar16 + 0x18) = param_3;\n          bVar14 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar19 = iVar17 == -1;\n          if ((bVar14) && (cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0x10] = bVar14;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar19 = puVar16[0x10];\n            }\n          }\n          if ((*(int *)(puVar16 + 8) == 0) || (puVar16[0x32] == '\0')) {\n            cVar20 = puVar16[0x32];\n          }\n          else {\n            cVar20 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }\n          }\n          if (cVar20 == cVar19) {\n            **(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n          puVar16 = puVar16 + -4;\n        }\n        param_10 = (ctype *)(*(int *)(puVar16 + 0x28) + 1);\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }\n  piVar3 = *(int **)(puVar16 + 0x80);\n  iVar17 = *(int *)(puVar16 + 0xc);\n  *piVar3 = (int)param_3;\n  piVar3[1] = iVar17;\n  return;\nLAB_0027c2c0:\n  puVar16[0x28] = cVar19;\n  puVar16[0xc] = bVar13;\n  piVar3 = *(int **)(puVar16 + 8);\n  iVar17 = *piVar3;\n  *(int **)(puVar16 + -0x10) = piVar3;\n  pcVar2 = *(code **)(iVar17 + 0x24);\n  *(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;\n  iVar17 = (*pcVar2)();\n  cVar20 = puVar16[0xc];\n  piVar4 = (int *)0x0;\n  if (iVar17 != -1) {\n    cVar20 = '\0';\n    piVar4 = piVar3;\n  }\n  cVar19 = puVar16[0x28];\n  *(int **)(puVar16 + 8) = piVar4;\n  goto LAB_0027bfb6;\n}\n\n" comment comment (declaration "void std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::get\n               (undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n               undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n               ctype *param_10,ctype *param_11)\n\n{\n  undefined1 uVar1;" primitive_type (ERROR "std::" identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "std::" identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "std::char_traits<char>>>::get\n               (undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n               undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n               ctype *param_10,ctype *param_11)\n\n{\n  undefined1" identifier : : identifier < primitive_type >> > : : (function_declarator "get\n               (undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n               undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n               ctype *param_10,ctype *param_11)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n               undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n               ctype *param_10,ctype *param_11)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "undefined4 *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "ctype *param_10" type_identifier (pointer_declarator "*param_10" * identifier)) , (parameter_declaration "ctype *param_11" type_identifier (pointer_declarator "*param_11" * identifier)) ))) { identifier) identifier ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "ctype cVar5;" type_identifier identifier ;) (declaration "ctype cVar6;" type_identifier identifier ;) (declaration "ctype *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "ctype *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined1 uVar12;" type_identifier identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "char cVar19;" primitive_type identifier ;) (declaration "char cVar20;" primitive_type identifier ;) (declaration "int aiStackY_b0 [9];" primitive_type (array_declarator "aiStackY_b0 [9]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_7c [8];" type_identifier (array_declarator "auStack_7c [8]" identifier [ number_literal ]) ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "uint local_70;" type_identifier identifier ;) (declaration "ctype local_6c [4];" type_identifier (array_declarator "local_6c [4]" identifier [ number_literal ]) ;) (declaration "undefined **local_68;" type_identifier (pointer_declarator "**local_68" * (pointer_declarator "*local_68" * identifier)) ;) (declaration "int local_64 [4];" primitive_type (array_declarator "local_64 [4]" identifier [ number_literal ]) ;) (declaration "byte local_54 [4];" type_identifier (array_declarator "local_54 [4]" identifier [ number_literal ]) ;) (declaration "ctype local_50 [6];" type_identifier (array_declarator "local_50 [6]" identifier [ number_literal ]) ;) (declaration "bool local_4a;" primitive_type identifier ;) (declaration "ctype local_49;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "undefined **local_44;" type_identifier (pointer_declarator "**local_44" * (pointer_declarator "*local_44" * identifier)) ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "locale *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "undefined **local_38;" type_identifier (pointer_declarator "**local_38" * (pointer_declarator "*local_38" * identifier)) ;) (declaration "int local_34 [5];" primitive_type (array_declarator "local_34 [5]" identifier [ number_literal ]) ;) (declaration "ctype local_20 [16];" type_identifier (array_declarator "local_20 [16]" identifier [ number_literal ]) ;) (expression_statement "local_68 = &_GLOBAL_OFFSET_TABLE_;" (assignment_expression "local_68 = &_GLOBAL_OFFSET_TABLE_" identifier = (pointer_expression "&_GLOBAL_OFFSET_TABLE_" & identifier)) ;) (expression_statement "local_70 = param_4;" (assignment_expression "local_70 = param_4" identifier = identifier) ;) (expression_statement "local_74 = param_5;" (assignment_expression "local_74 = param_5" identifier = identifier) ;) (expression_statement "local_48 = param_6;" (assignment_expression "local_48 = param_6" identifier = identifier) ;) (expression_statement "local_3c = (locale *)(param_7 + 0x6c);" (assignment_expression "local_3c = (locale *)(param_7 + 0x6c)" identifier = (cast_expression "(locale *)(param_7 + 0x6c)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0x6c)" ( (binary_expression "param_7 + 0x6c" identifier + number_literal) )))) ;) (expression_statement "pcVar7 = use_facet<std::ctype<char>>(local_3c);" (update_expression "pcVar7 = use_facet<std::ctype<char>>(local_3c)" (binary_expression "pcVar7 = use_facet<std::ctype<char>>(local_3c)" (assignment_expression "pcVar7 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::ctype" : : identifier) < (binary_expression "char>>(local_3c)" identifier >> (parenthesized_expression "(local_3c)" ( identifier )))) --) ;) (expression_statement "puVar16 = auStack_7c;" (assignment_expression "puVar16 = auStack_7c" identifier = identifier) ;) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) (if_statement "if (param_10 != param_11) {\n    local_4a = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar19 = *(int *)(puVar16 + 0xc) == -1;\n      bVar14 = param_3 != (int *)0x0 && (bool)cVar19;\n      puVar16[0x10] = bVar14;\n      if (bVar14) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar19 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar19;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar20 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar20 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar19;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar3 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar3;\n          *(int **)(puVar16 + -0x10) = piVar3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n          piVar4 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar20 = '\0';\n            piVar4 = piVar3;\n          }\n          cVar19 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar4;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      cVar6 = *param_10;\n      cVar5 = pcVar7[(byte)cVar6 + 0x11d];\n      *(uint *)(puVar16 + 0x10) = (uint)(byte)cVar6;\n      if (cVar5 == (ctype)0x0) {\n        pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n        cVar5 = cVar6;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar19;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          cVar5 = (ctype)(*pcVar2)();\n          cVar19 = puVar16[0x28];\n        }\n        if (cVar5 != (ctype)0x0) {\n          pcVar7[*(int *)(puVar16 + 0x10) + 0x11d] = cVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = *(int *)(pcVar7 + 0x18);\n        if ((*(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2) & 0x20) != 0) {\n          pcVar8 = param_10 + 1;\n          if (*(ctype **)(puVar16 + 0xa8) == pcVar8) {\n            pcVar8 = *(ctype **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);\n          }\n          *(ctype **)(puVar16 + 0xa4) = pcVar8;\n          uVar18 = *(uint *)(puVar16 + 0xc);\n          *(ctype **)(puVar16 + 0x10) = pcVar7;\n          cVar19 = uVar18 == 0xffffffff;\n          bVar15 = param_3 != (int *)0x0 && (bool)cVar19;\n          bVar14 = (bool)cVar19;\n          if (bVar15) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar13 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar20 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar20 != bVar14) {\n            do {\n              uVar10 = uVar18;\n              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }\n              uVar18 = 0xffffffff;\n              cVar19 = true;\n              bVar15 = param_3 != (int *)0x0;\n              bVar14 = (bool)cVar19;\n              if (!bVar15) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar14 = false;\n              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar13 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar14 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar18;\n          pcVar7 = *(ctype **)(puVar16 + 0x10);\n          param_10 = *(ctype **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\n          cVar20 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar20 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar19 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar20 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *(int *)pcVar7;\n        puVar16[0x10] = cVar19;\n        *(int *)(puVar16 + -0xc) = (int)cVar20;\n        *(ctype **)(puVar16 + -0x10) = pcVar7;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar19 = (*pcVar2)();\n        iVar17 = *(int *)pcVar7;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(ctype **)(puVar16 + -0x10) = pcVar7;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar20 = (*pcVar2)();\n        if (cVar20 != cVar19) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar19 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar19 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar19 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)cVar19;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar19 = (*pcVar2)();\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar20 = (*pcVar2)();\n          if (cVar20 != cVar19) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (cVar5 != (ctype)0x25) goto LAB_0027bc28;\n        *(ctype **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(ctype **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        cVar6 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar6;\n        cVar5 = pcVar7[(byte)cVar6 + 0x11d];\n        *(ctype *)(puVar16 + 0x10) = cVar5;\n        uVar12 = 0x25;\n        if (cVar5 == (ctype)0x0) {\n          pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n            *(ctype **)(puVar16 + -0x10) = pcVar7;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            cVar6 = (ctype)(*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (cVar6 != (ctype)0x0) {\n            *(ctype *)(puVar16 + 0x10) = cVar6;\n            pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          cVar6 = (ctype)0x0;\n        }\n        else {\nLAB_0027bdcc:\n          cVar6 = *(ctype *)(puVar16 + 0x10);\n          if ((cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f)) {\n            *(ctype **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            cVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;\n            cVar6 = pcVar7[(byte)cVar5 + 0x11d];\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (cVar6 == (ctype)0x0) {\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }\n            else {\n              iVar17 = (int)(char)cVar6;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)cVar6;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        *(ctype *)(puVar16 + 0x2c) = cVar6;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          pcVar8 = use_facet<std::ctype<char>>(*(locale **)(puVar16 + -0x10));\n          uVar12 = puVar16[0x2c];\n          uVar1 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if (pcVar8[0x1c] == (ctype)0x0) {\n            puVar16[0x33] = uVar1;\n            puVar16[0x2c] = uVar12;\n            *(ctype **)(puVar16 + -0x10) = pcVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10));\n            uVar12 = puVar16[0x2c];\n            cVar6 = *(ctype *)(puVar16 + 0x33);\n            pcVar2 = *(code **)(*(int *)pcVar8 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(ctype **)(puVar16 + -0x10) = pcVar8;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              cVar6 = (ctype)(*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            cVar6 = pcVar8[0x42];\n          }\n          *(ctype *)(puVar16 + 0x5c) = cVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          _M_extract_via_format();\n          iVar17 = *(int *)(puVar16 + 0x4c);\n          param_3 = *(int **)(puVar16 + 0x48);\n          *(int *)(puVar16 + 0x1c) = iVar17;\n          *(int *)(puVar16 + 0xc) = iVar17;\n          *(int **)(puVar16 + 0x18) = param_3;\n          bVar14 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar19 = iVar17 == -1;\n          if ((bVar14) && (cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0x10] = bVar14;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar19 = puVar16[0x10];\n            }\n          }\n          if ((*(int *)(puVar16 + 8) == 0) || (puVar16[0x32] == '\0')) {\n            cVar20 = puVar16[0x32];\n          }\n          else {\n            cVar20 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }\n          }\n          if (cVar20 == cVar19) {\n            **(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n          puVar16 = puVar16 + -4;\n        }\n        param_10 = (ctype *)(*(int *)(puVar16 + 0x28) + 1);\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }" if (parenthesized_expression "(param_10 != param_11)" ( (binary_expression "param_10 != param_11" identifier != identifier) )) (compound_statement "{\n    local_4a = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar19 = *(int *)(puVar16 + 0xc) == -1;\n      bVar14 = param_3 != (int *)0x0 && (bool)cVar19;\n      puVar16[0x10] = bVar14;\n      if (bVar14) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar19 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar19;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar20 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar20 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar19;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar3 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar3;\n          *(int **)(puVar16 + -0x10) = piVar3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n          piVar4 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar20 = '\0';\n            piVar4 = piVar3;\n          }\n          cVar19 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar4;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      cVar6 = *param_10;\n      cVar5 = pcVar7[(byte)cVar6 + 0x11d];\n      *(uint *)(puVar16 + 0x10) = (uint)(byte)cVar6;\n      if (cVar5 == (ctype)0x0) {\n        pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n        cVar5 = cVar6;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar19;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          cVar5 = (ctype)(*pcVar2)();\n          cVar19 = puVar16[0x28];\n        }\n        if (cVar5 != (ctype)0x0) {\n          pcVar7[*(int *)(puVar16 + 0x10) + 0x11d] = cVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = *(int *)(pcVar7 + 0x18);\n        if ((*(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2) & 0x20) != 0) {\n          pcVar8 = param_10 + 1;\n          if (*(ctype **)(puVar16 + 0xa8) == pcVar8) {\n            pcVar8 = *(ctype **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);\n          }\n          *(ctype **)(puVar16 + 0xa4) = pcVar8;\n          uVar18 = *(uint *)(puVar16 + 0xc);\n          *(ctype **)(puVar16 + 0x10) = pcVar7;\n          cVar19 = uVar18 == 0xffffffff;\n          bVar15 = param_3 != (int *)0x0 && (bool)cVar19;\n          bVar14 = (bool)cVar19;\n          if (bVar15) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar13 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar20 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar20 != bVar14) {\n            do {\n              uVar10 = uVar18;\n              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }\n              uVar18 = 0xffffffff;\n              cVar19 = true;\n              bVar15 = param_3 != (int *)0x0;\n              bVar14 = (bool)cVar19;\n              if (!bVar15) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar14 = false;\n              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar13 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar14 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar18;\n          pcVar7 = *(ctype **)(puVar16 + 0x10);\n          param_10 = *(ctype **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\n          cVar20 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar20 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar19 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar20 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *(int *)pcVar7;\n        puVar16[0x10] = cVar19;\n        *(int *)(puVar16 + -0xc) = (int)cVar20;\n        *(ctype **)(puVar16 + -0x10) = pcVar7;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar19 = (*pcVar2)();\n        iVar17 = *(int *)pcVar7;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(ctype **)(puVar16 + -0x10) = pcVar7;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar20 = (*pcVar2)();\n        if (cVar20 != cVar19) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar19 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar19 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar19 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)cVar19;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar19 = (*pcVar2)();\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar20 = (*pcVar2)();\n          if (cVar20 != cVar19) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (cVar5 != (ctype)0x25) goto LAB_0027bc28;\n        *(ctype **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(ctype **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        cVar6 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar6;\n        cVar5 = pcVar7[(byte)cVar6 + 0x11d];\n        *(ctype *)(puVar16 + 0x10) = cVar5;\n        uVar12 = 0x25;\n        if (cVar5 == (ctype)0x0) {\n          pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n            *(ctype **)(puVar16 + -0x10) = pcVar7;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            cVar6 = (ctype)(*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (cVar6 != (ctype)0x0) {\n            *(ctype *)(puVar16 + 0x10) = cVar6;\n            pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          cVar6 = (ctype)0x0;\n        }\n        else {\nLAB_0027bdcc:\n          cVar6 = *(ctype *)(puVar16 + 0x10);\n          if ((cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f)) {\n            *(ctype **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            cVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;\n            cVar6 = pcVar7[(byte)cVar5 + 0x11d];\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (cVar6 == (ctype)0x0) {\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }\n            else {\n              iVar17 = (int)(char)cVar6;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)cVar6;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        *(ctype *)(puVar16 + 0x2c) = cVar6;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          pcVar8 = use_facet<std::ctype<char>>(*(locale **)(puVar16 + -0x10));\n          uVar12 = puVar16[0x2c];\n          uVar1 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if (pcVar8[0x1c] == (ctype)0x0) {\n            puVar16[0x33] = uVar1;\n            puVar16[0x2c] = uVar12;\n            *(ctype **)(puVar16 + -0x10) = pcVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10));\n            uVar12 = puVar16[0x2c];\n            cVar6 = *(ctype *)(puVar16 + 0x33);\n            pcVar2 = *(code **)(*(int *)pcVar8 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(ctype **)(puVar16 + -0x10) = pcVar8;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              cVar6 = (ctype)(*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            cVar6 = pcVar8[0x42];\n          }\n          *(ctype *)(puVar16 + 0x5c) = cVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          _M_extract_via_format();\n          iVar17 = *(int *)(puVar16 + 0x4c);\n          param_3 = *(int **)(puVar16 + 0x48);\n          *(int *)(puVar16 + 0x1c) = iVar17;\n          *(int *)(puVar16 + 0xc) = iVar17;\n          *(int **)(puVar16 + 0x18) = param_3;\n          bVar14 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar19 = iVar17 == -1;\n          if ((bVar14) && (cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0x10] = bVar14;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar19 = puVar16[0x10];\n            }\n          }\n          if ((*(int *)(puVar16 + 8) == 0) || (puVar16[0x32] == '\0')) {\n            cVar20 = puVar16[0x32];\n          }\n          else {\n            cVar20 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }\n          }\n          if (cVar20 == cVar19) {\n            **(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n          puVar16 = puVar16 + -4;\n        }\n        param_10 = (ctype *)(*(int *)(puVar16 + 0x28) + 1);\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }" { (expression_statement "local_4a = local_48 == -1;" (assignment_expression "local_4a = local_48 == -1" identifier = (binary_expression "local_48 == -1" identifier == number_literal)) ;) (expression_statement "local_44 = local_68 + -0x4b990;" (assignment_expression "local_44 = local_68 + -0x4b990" identifier = (binary_expression "local_68 + -0x4b990" identifier + number_literal)) ;) (expression_statement "local_38 = local_68 + -0xbcb5c;" (assignment_expression "local_38 = local_68 + -0xbcb5c" identifier = (binary_expression "local_68 + -0xbcb5c" identifier + number_literal)) ;) (expression_statement "puVar16 = auStack_7c;" (assignment_expression "puVar16 = auStack_7c" identifier = identifier) ;) (do_statement "do {\n      cVar19 = *(int *)(puVar16 + 0xc) == -1;\n      bVar14 = param_3 != (int *)0x0 && (bool)cVar19;\n      puVar16[0x10] = bVar14;\n      if (bVar14) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar19 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar19;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar20 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar20 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar19;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar3 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar3;\n          *(int **)(puVar16 + -0x10) = piVar3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n          piVar4 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar20 = '\0';\n            piVar4 = piVar3;\n          }\n          cVar19 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar4;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      cVar6 = *param_10;\n      cVar5 = pcVar7[(byte)cVar6 + 0x11d];\n      *(uint *)(puVar16 + 0x10) = (uint)(byte)cVar6;\n      if (cVar5 == (ctype)0x0) {\n        pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n        cVar5 = cVar6;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar19;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          cVar5 = (ctype)(*pcVar2)();\n          cVar19 = puVar16[0x28];\n        }\n        if (cVar5 != (ctype)0x0) {\n          pcVar7[*(int *)(puVar16 + 0x10) + 0x11d] = cVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = *(int *)(pcVar7 + 0x18);\n        if ((*(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2) & 0x20) != 0) {\n          pcVar8 = param_10 + 1;\n          if (*(ctype **)(puVar16 + 0xa8) == pcVar8) {\n            pcVar8 = *(ctype **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);\n          }\n          *(ctype **)(puVar16 + 0xa4) = pcVar8;\n          uVar18 = *(uint *)(puVar16 + 0xc);\n          *(ctype **)(puVar16 + 0x10) = pcVar7;\n          cVar19 = uVar18 == 0xffffffff;\n          bVar15 = param_3 != (int *)0x0 && (bool)cVar19;\n          bVar14 = (bool)cVar19;\n          if (bVar15) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar13 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar20 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar20 != bVar14) {\n            do {\n              uVar10 = uVar18;\n              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }\n              uVar18 = 0xffffffff;\n              cVar19 = true;\n              bVar15 = param_3 != (int *)0x0;\n              bVar14 = (bool)cVar19;\n              if (!bVar15) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar14 = false;\n              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar13 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar14 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar18;\n          pcVar7 = *(ctype **)(puVar16 + 0x10);\n          param_10 = *(ctype **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\n          cVar20 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar20 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar19 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar20 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *(int *)pcVar7;\n        puVar16[0x10] = cVar19;\n        *(int *)(puVar16 + -0xc) = (int)cVar20;\n        *(ctype **)(puVar16 + -0x10) = pcVar7;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar19 = (*pcVar2)();\n        iVar17 = *(int *)pcVar7;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(ctype **)(puVar16 + -0x10) = pcVar7;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar20 = (*pcVar2)();\n        if (cVar20 != cVar19) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar19 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar19 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar19 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)cVar19;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar19 = (*pcVar2)();\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar20 = (*pcVar2)();\n          if (cVar20 != cVar19) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (cVar5 != (ctype)0x25) goto LAB_0027bc28;\n        *(ctype **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(ctype **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        cVar6 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar6;\n        cVar5 = pcVar7[(byte)cVar6 + 0x11d];\n        *(ctype *)(puVar16 + 0x10) = cVar5;\n        uVar12 = 0x25;\n        if (cVar5 == (ctype)0x0) {\n          pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n            *(ctype **)(puVar16 + -0x10) = pcVar7;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            cVar6 = (ctype)(*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (cVar6 != (ctype)0x0) {\n            *(ctype *)(puVar16 + 0x10) = cVar6;\n            pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          cVar6 = (ctype)0x0;\n        }\n        else {\nLAB_0027bdcc:\n          cVar6 = *(ctype *)(puVar16 + 0x10);\n          if ((cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f)) {\n            *(ctype **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            cVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;\n            cVar6 = pcVar7[(byte)cVar5 + 0x11d];\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (cVar6 == (ctype)0x0) {\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }\n            else {\n              iVar17 = (int)(char)cVar6;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)cVar6;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        *(ctype *)(puVar16 + 0x2c) = cVar6;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          pcVar8 = use_facet<std::ctype<char>>(*(locale **)(puVar16 + -0x10));\n          uVar12 = puVar16[0x2c];\n          uVar1 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if (pcVar8[0x1c] == (ctype)0x0) {\n            puVar16[0x33] = uVar1;\n            puVar16[0x2c] = uVar12;\n            *(ctype **)(puVar16 + -0x10) = pcVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10));\n            uVar12 = puVar16[0x2c];\n            cVar6 = *(ctype *)(puVar16 + 0x33);\n            pcVar2 = *(code **)(*(int *)pcVar8 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(ctype **)(puVar16 + -0x10) = pcVar8;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              cVar6 = (ctype)(*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            cVar6 = pcVar8[0x42];\n          }\n          *(ctype *)(puVar16 + 0x5c) = cVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          _M_extract_via_format();\n          iVar17 = *(int *)(puVar16 + 0x4c);\n          param_3 = *(int **)(puVar16 + 0x48);\n          *(int *)(puVar16 + 0x1c) = iVar17;\n          *(int *)(puVar16 + 0xc) = iVar17;\n          *(int **)(puVar16 + 0x18) = param_3;\n          bVar14 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar19 = iVar17 == -1;\n          if ((bVar14) && (cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0x10] = bVar14;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar19 = puVar16[0x10];\n            }\n          }\n          if ((*(int *)(puVar16 + 8) == 0) || (puVar16[0x32] == '\0')) {\n            cVar20 = puVar16[0x32];\n          }\n          else {\n            cVar20 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }\n          }\n          if (cVar20 == cVar19) {\n            **(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n          puVar16 = puVar16 + -4;\n        }\n        param_10 = (ctype *)(*(int *)(puVar16 + 0x28) + 1);\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }\n    } while (**(int **)(puVar16 + 0x9c) == 0);" do (compound_statement "{\n      cVar19 = *(int *)(puVar16 + 0xc) == -1;\n      bVar14 = param_3 != (int *)0x0 && (bool)cVar19;\n      puVar16[0x10] = bVar14;\n      if (bVar14) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar19 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar19;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar20 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar20 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar19;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar3 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar3;\n          *(int **)(puVar16 + -0x10) = piVar3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n          piVar4 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar20 = '\0';\n            piVar4 = piVar3;\n          }\n          cVar19 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar4;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      cVar6 = *param_10;\n      cVar5 = pcVar7[(byte)cVar6 + 0x11d];\n      *(uint *)(puVar16 + 0x10) = (uint)(byte)cVar6;\n      if (cVar5 == (ctype)0x0) {\n        pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n        cVar5 = cVar6;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar19;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          cVar5 = (ctype)(*pcVar2)();\n          cVar19 = puVar16[0x28];\n        }\n        if (cVar5 != (ctype)0x0) {\n          pcVar7[*(int *)(puVar16 + 0x10) + 0x11d] = cVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = *(int *)(pcVar7 + 0x18);\n        if ((*(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2) & 0x20) != 0) {\n          pcVar8 = param_10 + 1;\n          if (*(ctype **)(puVar16 + 0xa8) == pcVar8) {\n            pcVar8 = *(ctype **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);\n          }\n          *(ctype **)(puVar16 + 0xa4) = pcVar8;\n          uVar18 = *(uint *)(puVar16 + 0xc);\n          *(ctype **)(puVar16 + 0x10) = pcVar7;\n          cVar19 = uVar18 == 0xffffffff;\n          bVar15 = param_3 != (int *)0x0 && (bool)cVar19;\n          bVar14 = (bool)cVar19;\n          if (bVar15) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar13 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar20 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar20 != bVar14) {\n            do {\n              uVar10 = uVar18;\n              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }\n              uVar18 = 0xffffffff;\n              cVar19 = true;\n              bVar15 = param_3 != (int *)0x0;\n              bVar14 = (bool)cVar19;\n              if (!bVar15) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar14 = false;\n              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar13 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar14 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar18;\n          pcVar7 = *(ctype **)(puVar16 + 0x10);\n          param_10 = *(ctype **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\n          cVar20 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar20 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar19 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar20 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *(int *)pcVar7;\n        puVar16[0x10] = cVar19;\n        *(int *)(puVar16 + -0xc) = (int)cVar20;\n        *(ctype **)(puVar16 + -0x10) = pcVar7;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar19 = (*pcVar2)();\n        iVar17 = *(int *)pcVar7;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(ctype **)(puVar16 + -0x10) = pcVar7;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar20 = (*pcVar2)();\n        if (cVar20 != cVar19) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar19 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar19 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar19 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)cVar19;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar19 = (*pcVar2)();\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar20 = (*pcVar2)();\n          if (cVar20 != cVar19) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (cVar5 != (ctype)0x25) goto LAB_0027bc28;\n        *(ctype **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(ctype **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        cVar6 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar6;\n        cVar5 = pcVar7[(byte)cVar6 + 0x11d];\n        *(ctype *)(puVar16 + 0x10) = cVar5;\n        uVar12 = 0x25;\n        if (cVar5 == (ctype)0x0) {\n          pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n            *(ctype **)(puVar16 + -0x10) = pcVar7;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            cVar6 = (ctype)(*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (cVar6 != (ctype)0x0) {\n            *(ctype *)(puVar16 + 0x10) = cVar6;\n            pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          cVar6 = (ctype)0x0;\n        }\n        else {\nLAB_0027bdcc:\n          cVar6 = *(ctype *)(puVar16 + 0x10);\n          if ((cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f)) {\n            *(ctype **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            cVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;\n            cVar6 = pcVar7[(byte)cVar5 + 0x11d];\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (cVar6 == (ctype)0x0) {\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }\n            else {\n              iVar17 = (int)(char)cVar6;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)cVar6;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        *(ctype *)(puVar16 + 0x2c) = cVar6;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          pcVar8 = use_facet<std::ctype<char>>(*(locale **)(puVar16 + -0x10));\n          uVar12 = puVar16[0x2c];\n          uVar1 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if (pcVar8[0x1c] == (ctype)0x0) {\n            puVar16[0x33] = uVar1;\n            puVar16[0x2c] = uVar12;\n            *(ctype **)(puVar16 + -0x10) = pcVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10));\n            uVar12 = puVar16[0x2c];\n            cVar6 = *(ctype *)(puVar16 + 0x33);\n            pcVar2 = *(code **)(*(int *)pcVar8 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(ctype **)(puVar16 + -0x10) = pcVar8;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              cVar6 = (ctype)(*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            cVar6 = pcVar8[0x42];\n          }\n          *(ctype *)(puVar16 + 0x5c) = cVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          _M_extract_via_format();\n          iVar17 = *(int *)(puVar16 + 0x4c);\n          param_3 = *(int **)(puVar16 + 0x48);\n          *(int *)(puVar16 + 0x1c) = iVar17;\n          *(int *)(puVar16 + 0xc) = iVar17;\n          *(int **)(puVar16 + 0x18) = param_3;\n          bVar14 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar19 = iVar17 == -1;\n          if ((bVar14) && (cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0x10] = bVar14;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar19 = puVar16[0x10];\n            }\n          }\n          if ((*(int *)(puVar16 + 8) == 0) || (puVar16[0x32] == '\0')) {\n            cVar20 = puVar16[0x32];\n          }\n          else {\n            cVar20 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }\n          }\n          if (cVar20 == cVar19) {\n            **(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n          puVar16 = puVar16 + -4;\n        }\n        param_10 = (ctype *)(*(int *)(puVar16 + 0x28) + 1);\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }\n    }" { (expression_statement "cVar19 = *(int *)(puVar16 + 0xc) == -1;" (assignment_expression "cVar19 = *(int *)(puVar16 + 0xc) == -1" identifier = (binary_expression "*(int *)(puVar16 + 0xc) == -1" (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) == number_literal)) ;) (expression_statement "bVar14 = param_3 != (int *)0x0 && (bool)cVar19;" (assignment_expression "bVar14 = param_3 != (int *)0x0 && (bool)cVar19" identifier = (binary_expression "param_3 != (int *)0x0 && (bool)cVar19" (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (cast_expression "(bool)cVar19" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "puVar16[0x10] = bVar14;" (assignment_expression "puVar16[0x10] = bVar14" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar14) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar19 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar19;\n      }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar19 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }" { (if_statement "if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar19 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }" if (parenthesized_expression "((uint)param_3[2] < (uint)param_3[3])" ( (binary_expression "(uint)param_3[2] < (uint)param_3[3]" (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          puVar16[0x10] = 0;\n        }" { (expression_statement "puVar16[0x10] = 0;" (assignment_expression "puVar16[0x10] = 0" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n          puVar16[0x28] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar19 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }" else (compound_statement "{\n          puVar16[0x28] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar19 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }" { (expression_statement "puVar16[0x28] = cVar19;" (assignment_expression "puVar16[0x28] = cVar19" (subscript_expression "puVar16[0x28]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c42e;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c42e" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "uVar12 = puVar16[0x10];" (assignment_expression "uVar12 = puVar16[0x10]" identifier = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;) (expression_statement "cVar19 = puVar16[0x28];" (assignment_expression "cVar19 = puVar16[0x28]" identifier = (subscript_expression "puVar16[0x28]" identifier [ number_literal ])) ;) (if_statement "if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }" if (parenthesized_expression "(iVar17 == -1)" ( (binary_expression "iVar17 == -1" identifier == number_literal) )) (compound_statement "{\n            param_3 = (int *)0x0;\n          }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n            uVar12 = 0;\n          }" else (compound_statement "{\n            uVar12 = 0;\n          }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) }))) (expression_statement "puVar16[0x10] = uVar12;" (assignment_expression "puVar16[0x10] = uVar12" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) }))) }) (else_clause "else {\n        puVar16[0x10] = cVar19;\n      }" else (compound_statement "{\n        puVar16[0x10] = cVar19;\n      }" { (expression_statement "puVar16[0x10] = cVar19;" (assignment_expression "puVar16[0x10] = cVar19" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar20 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar20 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar19;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar3 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar3;\n          *(int **)(puVar16 + -0x10) = piVar3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n          piVar4 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar20 = '\0';\n            piVar4 = piVar3;\n          }\n          cVar19 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar4;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }" if (parenthesized_expression "((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0)" ( (binary_expression "(*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0" (parenthesized_expression "(*(int *)(puVar16 + 8) != 0 & puVar16[0x32])" ( (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) != number_literal) & (subscript_expression "puVar16[0x32]" identifier [ number_literal ])) )) == number_literal) )) (compound_statement "{\n        cVar20 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar20 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }" { (expression_statement "cVar20 = puVar16[0x32];" (assignment_expression "cVar20 = puVar16[0x32]" identifier = (subscript_expression "puVar16[0x32]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0027bd1f:\n        if (cVar20 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }" statement_identifier : (if_statement "if (cVar20 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }" if (parenthesized_expression "(cVar20 == puVar16[0x10])" ( (binary_expression "cVar20 == puVar16[0x10]" identifier == (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) )) (compound_statement "{\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }" { (labeled_statement "LAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;" statement_identifier : (expression_statement "**(undefined4 **)(puVar16 + 0x9c) = 6;" (assignment_expression "**(undefined4 **)(puVar16 + 0x9c) = 6" (pointer_expression "**(undefined4 **)(puVar16 + 0x9c)" * (pointer_expression "*(undefined4 **)(puVar16 + 0x9c)" * (cast_expression "(undefined4 **)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) = number_literal) ;)) (break_statement "break;" break ;) }))) }) (else_clause "else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar19;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar3 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar3;\n          *(int **)(puVar16 + -0x10) = piVar3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n          piVar4 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar20 = '\0';\n            piVar4 = piVar3;\n          }\n          cVar19 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar4;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }" else (compound_statement "{\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar19;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar3 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar3;\n          *(int **)(puVar16 + -0x10) = piVar3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n          piVar4 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar20 = '\0';\n            piVar4 = piVar3;\n          }\n          cVar19 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar4;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }" { (if_statement "if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar19;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar3 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar3;\n          *(int **)(puVar16 + -0x10) = piVar3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n          piVar4 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar20 = '\0';\n            piVar4 = piVar3;\n          }\n          cVar19 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar4;\n          goto LAB_0027bd1f;\n        }" if (parenthesized_expression "(*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))" ( (binary_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)" (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc)" * (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 8) + 0xc)" ( (binary_expression "*(int *)(puVar16 + 8) + 0xc" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + number_literal) )))) <= (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 8)" * (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 8) + 8)" ( (binary_expression "*(int *)(puVar16 + 8) + 8" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n          puVar16[0x2c] = cVar19;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar3 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar3;\n          *(int **)(puVar16 + -0x10) = piVar3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n          piVar4 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar20 = '\0';\n            piVar4 = piVar3;\n          }\n          cVar19 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar4;\n          goto LAB_0027bd1f;\n        }" { (expression_statement "puVar16[0x2c] = cVar19;" (assignment_expression "puVar16[0x2c] = cVar19" (subscript_expression "puVar16[0x2c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" (assignment_expression "puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (subscript_expression "puVar16[0x28]" identifier [ number_literal ]) = (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) != number_literal) & (subscript_expression "puVar16[0x32]" identifier [ number_literal ]))) ;) (expression_statement "piVar3 = *(int **)(puVar16 + 8);" (assignment_expression "piVar3 = *(int **)(puVar16 + 8)" identifier = (pointer_expression "*(int **)(puVar16 + 8)" * (cast_expression "(int **)(puVar16 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = *piVar3;" (assignment_expression "iVar17 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar3;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c46c;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c46c" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar20 = puVar16[0x28];" (assignment_expression "cVar20 = puVar16[0x28]" identifier = (subscript_expression "puVar16[0x28]" identifier [ number_literal ])) ;) (expression_statement "piVar4 = (int *)0x0;" (assignment_expression "piVar4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar17 != -1) {\n            cVar20 = '\0';\n            piVar4 = piVar3;\n          }" if (parenthesized_expression "(iVar17 != -1)" ( (binary_expression "iVar17 != -1" identifier != number_literal) )) (compound_statement "{\n            cVar20 = '\0';\n            piVar4 = piVar3;\n          }" { (expression_statement "cVar20 = '\0';" (assignment_expression "cVar20 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "piVar4 = piVar3;" (assignment_expression "piVar4 = piVar3" identifier = identifier) ;) })) (expression_statement "cVar19 = puVar16[0x2c];" (assignment_expression "cVar19 = puVar16[0x2c]" identifier = (subscript_expression "puVar16[0x2c]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(puVar16 + 8) = piVar4;" (assignment_expression "*(int **)(puVar16 + 8) = piVar4" (pointer_expression "*(int **)(puVar16 + 8)" * (cast_expression "(int **)(puVar16 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0027bd1f;" goto statement_identifier ;) })) (if_statement "if (puVar16[0x10] == '\0') goto LAB_0027c0a4;" if (parenthesized_expression "(puVar16[0x10] == '\0')" ( (binary_expression "puVar16[0x10] == '\0'" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0027c0a4;" goto statement_identifier ;)) }))) (expression_statement "cVar6 = *param_10;" (assignment_expression "cVar6 = *param_10" identifier = (pointer_expression "*param_10" * identifier)) ;) (expression_statement "cVar5 = pcVar7[(byte)cVar6 + 0x11d];" (assignment_expression "cVar5 = pcVar7[(byte)cVar6 + 0x11d]" identifier = (subscript_expression "pcVar7[(byte)cVar6 + 0x11d]" identifier [ (binary_expression "(byte)cVar6 + 0x11d" (cast_expression "(byte)cVar6" ( (type_descriptor "byte" type_identifier) ) identifier) + number_literal) ])) ;) (expression_statement "*(uint *)(puVar16 + 0x10) = (uint)(byte)cVar6;" (assignment_expression "*(uint *)(puVar16 + 0x10) = (uint)(byte)cVar6" (pointer_expression "*(uint *)(puVar16 + 0x10)" * (cast_expression "(uint *)(puVar16 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = (cast_expression "(uint)(byte)cVar6" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)cVar6" ( (type_descriptor "byte" type_identifier) ) identifier))) ;) (if_statement "if (cVar5 == (ctype)0x0) {\n        pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n        cVar5 = cVar6;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar19;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          cVar5 = (ctype)(*pcVar2)();\n          cVar19 = puVar16[0x28];\n        }\n        if (cVar5 != (ctype)0x0) {\n          pcVar7[*(int *)(puVar16 + 0x10) + 0x11d] = cVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = *(int *)(pcVar7 + 0x18);\n        if ((*(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2) & 0x20) != 0) {\n          pcVar8 = param_10 + 1;\n          if (*(ctype **)(puVar16 + 0xa8) == pcVar8) {\n            pcVar8 = *(ctype **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);\n          }\n          *(ctype **)(puVar16 + 0xa4) = pcVar8;\n          uVar18 = *(uint *)(puVar16 + 0xc);\n          *(ctype **)(puVar16 + 0x10) = pcVar7;\n          cVar19 = uVar18 == 0xffffffff;\n          bVar15 = param_3 != (int *)0x0 && (bool)cVar19;\n          bVar14 = (bool)cVar19;\n          if (bVar15) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar13 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar20 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar20 != bVar14) {\n            do {\n              uVar10 = uVar18;\n              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }\n              uVar18 = 0xffffffff;\n              cVar19 = true;\n              bVar15 = param_3 != (int *)0x0;\n              bVar14 = (bool)cVar19;\n              if (!bVar15) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar14 = false;\n              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar13 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar14 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar18;\n          pcVar7 = *(ctype **)(puVar16 + 0x10);\n          param_10 = *(ctype **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\n          cVar20 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar20 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar19 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar20 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *(int *)pcVar7;\n        puVar16[0x10] = cVar19;\n        *(int *)(puVar16 + -0xc) = (int)cVar20;\n        *(ctype **)(puVar16 + -0x10) = pcVar7;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar19 = (*pcVar2)();\n        iVar17 = *(int *)pcVar7;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(ctype **)(puVar16 + -0x10) = pcVar7;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar20 = (*pcVar2)();\n        if (cVar20 != cVar19) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar19 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar19 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar19 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)cVar19;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar19 = (*pcVar2)();\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar20 = (*pcVar2)();\n          if (cVar20 != cVar19) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (cVar5 != (ctype)0x25) goto LAB_0027bc28;\n        *(ctype **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(ctype **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        cVar6 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar6;\n        cVar5 = pcVar7[(byte)cVar6 + 0x11d];\n        *(ctype *)(puVar16 + 0x10) = cVar5;\n        uVar12 = 0x25;\n        if (cVar5 == (ctype)0x0) {\n          pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n            *(ctype **)(puVar16 + -0x10) = pcVar7;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            cVar6 = (ctype)(*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (cVar6 != (ctype)0x0) {\n            *(ctype *)(puVar16 + 0x10) = cVar6;\n            pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          cVar6 = (ctype)0x0;\n        }\n        else {\nLAB_0027bdcc:\n          cVar6 = *(ctype *)(puVar16 + 0x10);\n          if ((cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f)) {\n            *(ctype **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            cVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;\n            cVar6 = pcVar7[(byte)cVar5 + 0x11d];\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (cVar6 == (ctype)0x0) {\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }\n            else {\n              iVar17 = (int)(char)cVar6;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)cVar6;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        *(ctype *)(puVar16 + 0x2c) = cVar6;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          pcVar8 = use_facet<std::ctype<char>>(*(locale **)(puVar16 + -0x10));\n          uVar12 = puVar16[0x2c];\n          uVar1 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if (pcVar8[0x1c] == (ctype)0x0) {\n            puVar16[0x33] = uVar1;\n            puVar16[0x2c] = uVar12;\n            *(ctype **)(puVar16 + -0x10) = pcVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10));\n            uVar12 = puVar16[0x2c];\n            cVar6 = *(ctype *)(puVar16 + 0x33);\n            pcVar2 = *(code **)(*(int *)pcVar8 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(ctype **)(puVar16 + -0x10) = pcVar8;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              cVar6 = (ctype)(*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            cVar6 = pcVar8[0x42];\n          }\n          *(ctype *)(puVar16 + 0x5c) = cVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          _M_extract_via_format();\n          iVar17 = *(int *)(puVar16 + 0x4c);\n          param_3 = *(int **)(puVar16 + 0x48);\n          *(int *)(puVar16 + 0x1c) = iVar17;\n          *(int *)(puVar16 + 0xc) = iVar17;\n          *(int **)(puVar16 + 0x18) = param_3;\n          bVar14 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar19 = iVar17 == -1;\n          if ((bVar14) && (cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0x10] = bVar14;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar19 = puVar16[0x10];\n            }\n          }\n          if ((*(int *)(puVar16 + 8) == 0) || (puVar16[0x32] == '\0')) {\n            cVar20 = puVar16[0x32];\n          }\n          else {\n            cVar20 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }\n          }\n          if (cVar20 == cVar19) {\n            **(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n          puVar16 = puVar16 + -4;\n        }\n        param_10 = (ctype *)(*(int *)(puVar16 + 0x28) + 1);\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }" if (parenthesized_expression "(cVar5 == (ctype)0x0)" ( (binary_expression "cVar5 == (ctype)0x0" identifier == (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n        pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n        cVar5 = cVar6;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar19;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          cVar5 = (ctype)(*pcVar2)();\n          cVar19 = puVar16[0x28];\n        }\n        if (cVar5 != (ctype)0x0) {\n          pcVar7[*(int *)(puVar16 + 0x10) + 0x11d] = cVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = *(int *)(pcVar7 + 0x18);\n        if ((*(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2) & 0x20) != 0) {\n          pcVar8 = param_10 + 1;\n          if (*(ctype **)(puVar16 + 0xa8) == pcVar8) {\n            pcVar8 = *(ctype **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);\n          }\n          *(ctype **)(puVar16 + 0xa4) = pcVar8;\n          uVar18 = *(uint *)(puVar16 + 0xc);\n          *(ctype **)(puVar16 + 0x10) = pcVar7;\n          cVar19 = uVar18 == 0xffffffff;\n          bVar15 = param_3 != (int *)0x0 && (bool)cVar19;\n          bVar14 = (bool)cVar19;\n          if (bVar15) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar13 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar20 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar20 != bVar14) {\n            do {\n              uVar10 = uVar18;\n              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }\n              uVar18 = 0xffffffff;\n              cVar19 = true;\n              bVar15 = param_3 != (int *)0x0;\n              bVar14 = (bool)cVar19;\n              if (!bVar15) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar14 = false;\n              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar13 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar14 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar18;\n          pcVar7 = *(ctype **)(puVar16 + 0x10);\n          param_10 = *(ctype **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\n          cVar20 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar20 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar19 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar20 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *(int *)pcVar7;\n        puVar16[0x10] = cVar19;\n        *(int *)(puVar16 + -0xc) = (int)cVar20;\n        *(ctype **)(puVar16 + -0x10) = pcVar7;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar19 = (*pcVar2)();\n        iVar17 = *(int *)pcVar7;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(ctype **)(puVar16 + -0x10) = pcVar7;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar20 = (*pcVar2)();\n        if (cVar20 != cVar19) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar19 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar19 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar19 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)cVar19;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar19 = (*pcVar2)();\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar20 = (*pcVar2)();\n          if (cVar20 != cVar19) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }" { (expression_statement "pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);" (assignment_expression "pcVar2 = *(code **)(*(int *)pcVar7 + 0x20)" identifier = (pointer_expression "*(code **)(*(int *)pcVar7 + 0x20)" * (cast_expression "(code **)(*(int *)pcVar7 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pcVar7 + 0x20)" ( (binary_expression "*(int *)pcVar7 + 0x20" (pointer_expression "*(int *)pcVar7" * (cast_expression "(int *)pcVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (expression_statement "cVar5 = cVar6;" (assignment_expression "cVar5 = cVar6" identifier = identifier) ;) (if_statement "if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar19;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          cVar5 = (ctype)(*pcVar2)();\n          cVar19 = puVar16[0x28];\n        }" if (parenthesized_expression "(pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c))" ( (binary_expression "pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" identifier != (pointer_expression "*(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" * (cast_expression "(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + 0x14) + -0x24c)" ( (binary_expression "*(int *)(puVar16 + 0x14) + -0x24c" (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n          puVar16[0x28] = cVar19;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          cVar5 = (ctype)(*pcVar2)();\n          cVar19 = puVar16[0x28];\n        }" { (expression_statement "puVar16[0x28] = cVar19;" (assignment_expression "puVar16[0x28] = cVar19" (subscript_expression "puVar16[0x28]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)cVar6;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)cVar6" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)(char)cVar6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)cVar6" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "*(ctype **)(puVar16 + -0x10) = pcVar7;" (assignment_expression "*(ctype **)(puVar16 + -0x10) = pcVar7" (pointer_expression "*(ctype **)(puVar16 + -0x10)" * (cast_expression "(ctype **)(puVar16 + -0x10)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c190;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c190" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar5 = (ctype)(*pcVar2)();" (assignment_expression "cVar5 = (ctype)(*pcVar2)()" identifier = (call_expression "(ctype)(*pcVar2)()" (call_expression "(ctype)(*pcVar2)" (parenthesized_expression "(ctype)" ( identifier )) (argument_list "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) ))) (argument_list "()" ( )))) ;) (expression_statement "cVar19 = puVar16[0x28];" (assignment_expression "cVar19 = puVar16[0x28]" identifier = (subscript_expression "puVar16[0x28]" identifier [ number_literal ])) ;) })) (if_statement "if (cVar5 != (ctype)0x0) {\n          pcVar7[*(int *)(puVar16 + 0x10) + 0x11d] = cVar5;\n          goto LAB_0027bd69;\n        }" if (parenthesized_expression "(cVar5 != (ctype)0x0)" ( (binary_expression "cVar5 != (ctype)0x0" identifier != (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n          pcVar7[*(int *)(puVar16 + 0x10) + 0x11d] = cVar5;\n          goto LAB_0027bd69;\n        }" { (expression_statement "pcVar7[*(int *)(puVar16 + 0x10) + 0x11d] = cVar5;" (assignment_expression "pcVar7[*(int *)(puVar16 + 0x10) + 0x11d] = cVar5" (subscript_expression "pcVar7[*(int *)(puVar16 + 0x10) + 0x11d]" identifier [ (binary_expression "*(int *)(puVar16 + 0x10) + 0x11d" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) + number_literal) ]) = identifier) ;) (goto_statement "goto LAB_0027bd69;" goto statement_identifier ;) })) (labeled_statement "LAB_0027bc28:\n        iVar17 = *(int *)(pcVar7 + 0x18);" statement_identifier : (expression_statement "iVar17 = *(int *)(pcVar7 + 0x18);" (assignment_expression "iVar17 = *(int *)(pcVar7 + 0x18)" identifier = (pointer_expression "*(int *)(pcVar7 + 0x18)" * (cast_expression "(int *)(pcVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 0x18)" ( (binary_expression "pcVar7 + 0x18" identifier + number_literal) ))))) ;)) (if_statement "if ((*(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2) & 0x20) != 0) {\n          pcVar8 = param_10 + 1;\n          if (*(ctype **)(puVar16 + 0xa8) == pcVar8) {\n            pcVar8 = *(ctype **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);\n          }\n          *(ctype **)(puVar16 + 0xa4) = pcVar8;\n          uVar18 = *(uint *)(puVar16 + 0xc);\n          *(ctype **)(puVar16 + 0x10) = pcVar7;\n          cVar19 = uVar18 == 0xffffffff;\n          bVar15 = param_3 != (int *)0x0 && (bool)cVar19;\n          bVar14 = (bool)cVar19;\n          if (bVar15) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar13 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar20 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar20 != bVar14) {\n            do {\n              uVar10 = uVar18;\n              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }\n              uVar18 = 0xffffffff;\n              cVar19 = true;\n              bVar15 = param_3 != (int *)0x0;\n              bVar14 = (bool)cVar19;\n              if (!bVar15) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar14 = false;\n              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar13 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar14 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar18;\n          pcVar7 = *(ctype **)(puVar16 + 0x10);\n          param_10 = *(ctype **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }" if (parenthesized_expression "((*(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2) & 0x20) != 0)" ( (binary_expression "(*(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2) & 0x20)" ( (binary_expression "*(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2) & 0x20" (pointer_expression "*(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2)" * (cast_expression "(byte *)(iVar17 + 1 + (uint)(byte)*param_10 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 1 + (uint)(byte)*param_10 * 2)" ( (binary_expression "iVar17 + 1 + (uint)(byte)*param_10 * 2" (binary_expression "iVar17 + 1" identifier + number_literal) + (binary_expression "(uint)(byte)*param_10 * 2" (binary_expression "(uint)(byte)*param_10" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pcVar8 = param_10 + 1;\n          if (*(ctype **)(puVar16 + 0xa8) == pcVar8) {\n            pcVar8 = *(ctype **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);\n          }\n          *(ctype **)(puVar16 + 0xa4) = pcVar8;\n          uVar18 = *(uint *)(puVar16 + 0xc);\n          *(ctype **)(puVar16 + 0x10) = pcVar7;\n          cVar19 = uVar18 == 0xffffffff;\n          bVar15 = param_3 != (int *)0x0 && (bool)cVar19;\n          bVar14 = (bool)cVar19;\n          if (bVar15) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar13 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar20 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar20 != bVar14) {\n            do {\n              uVar10 = uVar18;\n              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }\n              uVar18 = 0xffffffff;\n              cVar19 = true;\n              bVar15 = param_3 != (int *)0x0;\n              bVar14 = (bool)cVar19;\n              if (!bVar15) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar14 = false;\n              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar13 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar14 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar18;\n          pcVar7 = *(ctype **)(puVar16 + 0x10);\n          param_10 = *(ctype **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }" { (expression_statement "pcVar8 = param_10 + 1;" (assignment_expression "pcVar8 = param_10 + 1" identifier = (binary_expression "param_10 + 1" identifier + number_literal)) ;) (if_statement "if (*(ctype **)(puVar16 + 0xa8) == pcVar8) {\n            pcVar8 = *(ctype **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);\n          }" if (parenthesized_expression "(*(ctype **)(puVar16 + 0xa8) == pcVar8)" ( (binary_expression "*(ctype **)(puVar16 + 0xa8) == pcVar8" (pointer_expression "*(ctype **)(puVar16 + 0xa8)" * (cast_expression "(ctype **)(puVar16 + 0xa8)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n            pcVar8 = *(ctype **)(puVar16 + 0xa8);\n          }" { (expression_statement "pcVar8 = *(ctype **)(puVar16 + 0xa8);" (assignment_expression "pcVar8 = *(ctype **)(puVar16 + 0xa8)" identifier = (pointer_expression "*(ctype **)(puVar16 + 0xa8)" * (cast_expression "(ctype **)(puVar16 + 0xa8)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) ))))) ;) }) (else_clause "else if ((*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);\n          }" else (if_statement "if ((*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);\n          }" if (parenthesized_expression "((*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0)" ( (binary_expression "(*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20)" ( (binary_expression "*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2) & 0x20" (pointer_expression "*(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2)" * (cast_expression "(byte *)(iVar17 + 1 + (uint)(byte)param_10[1] * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 1 + (uint)(byte)param_10[1] * 2)" ( (binary_expression "iVar17 + 1 + (uint)(byte)param_10[1] * 2" (binary_expression "iVar17 + 1" identifier + number_literal) + (binary_expression "(uint)(byte)param_10[1] * 2" (cast_expression "(uint)(byte)param_10[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)param_10[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "param_10[1]" identifier [ number_literal ]))) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            do {\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);\n          }" { (do_statement "do {\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0);" do (compound_statement "{\n              pcVar8 = pcVar8 + 1;\n              if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;\n            }" { (expression_statement "pcVar8 = pcVar8 + 1;" (assignment_expression "pcVar8 = pcVar8 + 1" identifier = (binary_expression "pcVar8 + 1" identifier + number_literal)) ;) (if_statement "if (*(ctype **)(puVar16 + 0xa8) == pcVar8) break;" if (parenthesized_expression "(*(ctype **)(puVar16 + 0xa8) == pcVar8)" ( (binary_expression "*(ctype **)(puVar16 + 0xa8) == pcVar8" (pointer_expression "*(ctype **)(puVar16 + 0xa8)" * (cast_expression "(ctype **)(puVar16 + 0xa8)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == identifier) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "((*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0)" ( (binary_expression "(*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20)" ( (binary_expression "*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2) & 0x20" (pointer_expression "*(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2)" * (cast_expression "(byte *)(iVar17 + 1 + (uint)(byte)*pcVar8 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 1 + (uint)(byte)*pcVar8 * 2)" ( (binary_expression "iVar17 + 1 + (uint)(byte)*pcVar8 * 2" (binary_expression "iVar17 + 1" identifier + number_literal) + (binary_expression "(uint)(byte)*pcVar8 * 2" (binary_expression "(uint)(byte)*pcVar8" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) })))) (expression_statement "*(ctype **)(puVar16 + 0xa4) = pcVar8;" (assignment_expression "*(ctype **)(puVar16 + 0xa4) = pcVar8" (pointer_expression "*(ctype **)(puVar16 + 0xa4)" * (cast_expression "(ctype **)(puVar16 + 0xa4)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa4)" ( (binary_expression "puVar16 + 0xa4" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar18 = *(uint *)(puVar16 + 0xc);" (assignment_expression "uVar18 = *(uint *)(puVar16 + 0xc)" identifier = (pointer_expression "*(uint *)(puVar16 + 0xc)" * (cast_expression "(uint *)(puVar16 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(ctype **)(puVar16 + 0x10) = pcVar7;" (assignment_expression "*(ctype **)(puVar16 + 0x10) = pcVar7" (pointer_expression "*(ctype **)(puVar16 + 0x10)" * (cast_expression "(ctype **)(puVar16 + 0x10)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "cVar19 = uVar18 == 0xffffffff;" (assignment_expression "cVar19 = uVar18 == 0xffffffff" identifier = (binary_expression "uVar18 == 0xffffffff" identifier == number_literal)) ;) (expression_statement "bVar15 = param_3 != (int *)0x0 && (bool)cVar19;" (assignment_expression "bVar15 = param_3 != (int *)0x0 && (bool)cVar19" identifier = (binary_expression "param_3 != (int *)0x0 && (bool)cVar19" (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (cast_expression "(bool)cVar19" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "bVar14 = (bool)cVar19;" (assignment_expression "bVar14 = (bool)cVar19" identifier = (cast_expression "(bool)cVar19" ( (type_descriptor "bool" primitive_type) ) identifier)) ;) (if_statement "if (bVar15) goto LAB_0027bfff;" if (parenthesized_expression "(bVar15)" ( identifier )) (goto_statement "goto LAB_0027bfff;" goto statement_identifier ;)) (labeled_statement "LAB_0027bfa2:\n          bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" statement_identifier : (expression_statement "bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" (assignment_expression "bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32]" identifier = (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) != number_literal) & (subscript_expression "puVar16[0x32]" identifier [ number_literal ]))) ;)) (if_statement "if (bVar13 != 0) goto LAB_0027c01c;" if (parenthesized_expression "(bVar13 != 0)" ( (binary_expression "bVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0027c01c;" goto statement_identifier ;)) (labeled_statement "LAB_0027bfb1:\n          cVar20 = puVar16[0x32];" statement_identifier : (expression_statement "cVar20 = puVar16[0x32];" (assignment_expression "cVar20 = puVar16[0x32]" identifier = (subscript_expression "puVar16[0x32]" identifier [ number_literal ])) ;)) (labeled_statement "LAB_0027bfb6:\n          if ((bool)cVar20 != bVar14) {\n            do {\n              uVar10 = uVar18;\n              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }\n              uVar18 = 0xffffffff;\n              cVar19 = true;\n              bVar15 = param_3 != (int *)0x0;\n              bVar14 = (bool)cVar19;\n              if (!bVar15) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar14 = false;\n              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar13 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar14 == false) break;\n            } while( true );\n          }" statement_identifier : (if_statement "if ((bool)cVar20 != bVar14) {\n            do {\n              uVar10 = uVar18;\n              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }\n              uVar18 = 0xffffffff;\n              cVar19 = true;\n              bVar15 = param_3 != (int *)0x0;\n              bVar14 = (bool)cVar19;\n              if (!bVar15) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar14 = false;\n              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar13 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar14 == false) break;\n            } while( true );\n          }" if (parenthesized_expression "((bool)cVar20 != bVar14)" ( (binary_expression "(bool)cVar20 != bVar14" (cast_expression "(bool)cVar20" ( (type_descriptor "bool" primitive_type) ) identifier) != identifier) )) (compound_statement "{\n            do {\n              uVar10 = uVar18;\n              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }\n              uVar18 = 0xffffffff;\n              cVar19 = true;\n              bVar15 = param_3 != (int *)0x0;\n              bVar14 = (bool)cVar19;\n              if (!bVar15) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar14 = false;\n              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar13 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar14 == false) break;\n            } while( true );\n          }" { (do_statement "do {\n              uVar10 = uVar18;\n              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }\n              uVar18 = 0xffffffff;\n              cVar19 = true;\n              bVar15 = param_3 != (int *)0x0;\n              bVar14 = (bool)cVar19;\n              if (!bVar15) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar14 = false;\n              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar13 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar14 == false) break;\n            } while( true );" do (compound_statement "{\n              uVar10 = uVar18;\n              if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }\n              uVar18 = 0xffffffff;\n              cVar19 = true;\n              bVar15 = param_3 != (int *)0x0;\n              bVar14 = (bool)cVar19;\n              if (!bVar15) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar14 = false;\n              bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar13 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar14 == false) break;\n            }" { (expression_statement "uVar10 = uVar18;" (assignment_expression "uVar10 = uVar18" identifier = identifier) ;) (if_statement "if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }" if (parenthesized_expression "((param_3 == (int *)0x0) || (cVar19 == '\0'))" ( (binary_expression "(param_3 == (int *)0x0) || (cVar19 == '\0')" (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(cVar19 == '\0')" ( (binary_expression "cVar19 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar9 = (byte *)param_3[2];\n                if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }" { (labeled_statement "LAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;" statement_identifier : (if_statement "if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;" if (parenthesized_expression "((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0)" ( (binary_expression "(*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0" (parenthesized_expression "(*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20)" ( (binary_expression "*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20" (pointer_expression "*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)" * (cast_expression "(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)" ( (binary_expression "*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2" (binary_expression "*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1" (pointer_expression "*(int *)(*(int *)(puVar16 + 0x10) + 0x18)" * (cast_expression "(int *)(*(int *)(puVar16 + 0x10) + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x10) + 0x18)" ( (binary_expression "*(int *)(puVar16 + 0x10) + 0x18" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) + number_literal) )))) + number_literal) + (binary_expression "(uVar10 & 0xff) * 2" (parenthesized_expression "(uVar10 & 0xff)" ( (binary_expression "uVar10 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;))) (expression_statement "pbVar9 = (byte *)param_3[2];" (assignment_expression "pbVar9 = (byte *)param_3[2]" identifier = (cast_expression "(byte *)param_3[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar9 < (byte *)param_3[3]) goto LAB_0027bfe5;" if (parenthesized_expression "(pbVar9 < (byte *)param_3[3])" ( (binary_expression "pbVar9 < (byte *)param_3[3]" identifier < (cast_expression "(byte *)param_3[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0027bfe5;" goto statement_identifier ;)) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x28)" identifier = (pointer_expression "*(code **)(iVar17 + 0x28)" * (cast_expression "(code **)(iVar17 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x28)" ( (binary_expression "iVar17 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c0e9" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }" else (compound_statement "{\n                pbVar9 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                pcVar7 = *(ctype **)(puVar16 + 0x10);\n                if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);\n              }" { (expression_statement "pbVar9 = (byte *)param_3[2];" (assignment_expression "pbVar9 = (byte *)param_3[2]" identifier = (cast_expression "(byte *)param_3[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) (if_statement "if ((byte *)param_3[3] <= pbVar9) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }" if (parenthesized_expression "((byte *)param_3[3] <= pbVar9)" ( (binary_expression "(byte *)param_3[3] <= pbVar9" (cast_expression "(byte *)param_3[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }" { (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c3ae" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar10 = (*pcVar2)();" (assignment_expression "uVar10 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }" if (parenthesized_expression "(uVar10 == 0xffffffff)" ( (binary_expression "uVar10 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                    param_3 = (int *)0x0;\n                  }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_0027bfc8;" goto statement_identifier ;) })) (expression_statement "pcVar7 = *(ctype **)(puVar16 + 0x10);" (assignment_expression "pcVar7 = *(ctype **)(puVar16 + 0x10)" identifier = (pointer_expression "*(ctype **)(puVar16 + 0x10)" * (cast_expression "(ctype **)(puVar16 + 0x10)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0) {\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }" if (parenthesized_expression "((*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0)" ( (binary_expression "(*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20)" ( (binary_expression "*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2) & 0x20" (pointer_expression "*(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2)" * (cast_expression "(byte *)(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2)" ( (binary_expression "*(int *)(pcVar7 + 0x18) + 1 + (uint)*pbVar9 * 2" (binary_expression "*(int *)(pcVar7 + 0x18) + 1" (pointer_expression "*(int *)(pcVar7 + 0x18)" * (cast_expression "(int *)(pcVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 0x18)" ( (binary_expression "pcVar7 + 0x18" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*pbVar9 * 2" (binary_expression "(uint)*pbVar9" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                  param_10 = *(ctype **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }" { (expression_statement "param_10 = *(ctype **)(puVar16 + 0xa4);" (assignment_expression "param_10 = *(ctype **)(puVar16 + 0xa4)" identifier = (pointer_expression "*(ctype **)(puVar16 + 0xa4)" * (cast_expression "(ctype **)(puVar16 + 0xa4)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa4)" ( (binary_expression "puVar16 + 0xa4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0027bccc;" goto statement_identifier ;) })) (labeled_statement "LAB_0027bfe5:\n                param_3[2] = (int)(pbVar9 + 1);" statement_identifier : (expression_statement "param_3[2] = (int)(pbVar9 + 1);" (assignment_expression "param_3[2] = (int)(pbVar9 + 1)" (subscript_expression "param_3[2]" identifier [ number_literal ]) = (cast_expression "(int)(pbVar9 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar9 + 1)" ( (binary_expression "pbVar9 + 1" identifier + number_literal) )))) ;)) }))) (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" identifier = number_literal) ;) (expression_statement "cVar19 = true;" (assignment_expression "cVar19 = true" identifier = true) ;) (expression_statement "bVar15 = param_3 != (int *)0x0;" (assignment_expression "bVar15 = param_3 != (int *)0x0" identifier = (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "bVar14 = (bool)cVar19;" (assignment_expression "bVar14 = (bool)cVar19" identifier = (cast_expression "(bool)cVar19" ( (type_descriptor "bool" primitive_type) ) identifier)) ;) (if_statement "if (!bVar15) goto LAB_0027bfa2;" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (goto_statement "goto LAB_0027bfa2;" goto statement_identifier ;)) (labeled_statement "LAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }" statement_identifier : (if_statement "if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }" if (parenthesized_expression "((uint)param_3[3] <= (uint)param_3[2])" ( (binary_expression "(uint)param_3[3] <= (uint)param_3[2]" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) )) (compound_statement "{\n                puVar16[0xc] = cVar19;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar14 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }\n                cVar19 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }" { (expression_statement "puVar16[0xc] = cVar19;" (assignment_expression "puVar16[0xc] = cVar19" (subscript_expression "puVar16[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c30d;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c30d" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (if_statement "if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }" if (parenthesized_expression "(iVar17 == -1)" ( (binary_expression "iVar17 == -1" identifier == number_literal) )) (compound_statement "{\n                  param_3 = (int *)0x0;\n                  bVar14 = bVar15;\n                }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar14 = bVar15;" (assignment_expression "bVar14 = bVar15" identifier = identifier) ;) })) (expression_statement "cVar19 = puVar16[0xc];" (assignment_expression "cVar19 = puVar16[0xc]" identifier = (subscript_expression "puVar16[0xc]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0027bfa2;" goto statement_identifier ;) }))) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" (assignment_expression "bVar13 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32]" identifier = (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) != number_literal) & (subscript_expression "puVar16[0x32]" identifier [ number_literal ]))) ;) (if_statement "if (bVar13 == 0) goto LAB_0027bfb1;" if (parenthesized_expression "(bVar13 == 0)" ( (binary_expression "bVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0027bfb1;" goto statement_identifier ;)) (labeled_statement "LAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;" statement_identifier : (if_statement "if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;" if (parenthesized_expression "(*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))" ( (binary_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)" (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc)" * (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 8) + 0xc)" ( (binary_expression "*(int *)(puVar16 + 8) + 0xc" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + number_literal) )))) <= (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 8)" * (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 8) + 8)" ( (binary_expression "*(int *)(puVar16 + 8) + 8" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (goto_statement "goto LAB_0027c2c0;" goto statement_identifier ;))) (if_statement "if (bVar14 == false) break;" if (parenthesized_expression "(bVar14 == false)" ( (binary_expression "bVar14 == false" identifier == false) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "*(uint *)(puVar16 + 0xc) = uVar18;" (assignment_expression "*(uint *)(puVar16 + 0xc) = uVar18" (pointer_expression "*(uint *)(puVar16 + 0xc)" * (cast_expression "(uint *)(puVar16 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar7 = *(ctype **)(puVar16 + 0x10);" (assignment_expression "pcVar7 = *(ctype **)(puVar16 + 0x10)" identifier = (pointer_expression "*(ctype **)(puVar16 + 0x10)" * (cast_expression "(ctype **)(puVar16 + 0x10)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "param_10 = *(ctype **)(puVar16 + 0xa4);" (assignment_expression "param_10 = *(ctype **)(puVar16 + 0xa4)" identifier = (pointer_expression "*(ctype **)(puVar16 + 0xa4)" * (cast_expression "(ctype **)(puVar16 + 0xa4)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa4)" ( (binary_expression "puVar16 + 0xa4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0027bccc;" goto statement_identifier ;) })) (if_statement "if ((param_3 == (int *)0x0) || (cVar19 == '\0')) {\n          cVar20 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar20 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar19 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar20 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" if (parenthesized_expression "((param_3 == (int *)0x0) || (cVar19 == '\0'))" ( (binary_expression "(param_3 == (int *)0x0) || (cVar19 == '\0')" (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(cVar19 == '\0')" ( (binary_expression "cVar19 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n          cVar20 = puVar16[0xc];\n        }" { (expression_statement "cVar20 = puVar16[0xc];" (assignment_expression "cVar20 = puVar16[0xc]" identifier = (subscript_expression "puVar16[0xc]" identifier [ number_literal ])) ;) }) (else_clause "else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar20 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar19 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar20 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" else (if_statement "if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar20 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar19 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar20 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" if (parenthesized_expression "((char *)param_3[2] < (char *)param_3[3])" ( (binary_expression "(char *)param_3[2] < (char *)param_3[3]" (cast_expression "(char *)param_3[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_3[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          cVar20 = *(char *)param_3[2];\n        }" { (expression_statement "cVar20 = *(char *)param_3[2];" (assignment_expression "cVar20 = *(char *)param_3[2]" identifier = (pointer_expression "*(char *)param_3[2]" * (cast_expression "(char *)param_3[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n          puVar16[0x10] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar19 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar20 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" else (compound_statement "{\n          puVar16[0x10] = cVar19;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar19 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar20 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" { (expression_statement "puVar16[0x10] = cVar19;" (assignment_expression "puVar16[0x10] = cVar19" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c4df;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c4df" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar11 = (*pcVar2)();" (assignment_expression "iVar11 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar19 = puVar16[0x10];" (assignment_expression "cVar19 = puVar16[0x10]" identifier = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;) (expression_statement "iVar17 = -1;" (assignment_expression "iVar17 = -1" identifier = number_literal) ;) (if_statement "if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }" if (parenthesized_expression "(iVar11 != -1)" ( (binary_expression "iVar11 != -1" identifier != number_literal) )) (compound_statement "{\n            iVar17 = iVar11;\n          }" { (expression_statement "iVar17 = iVar11;" (assignment_expression "iVar17 = iVar11" identifier = identifier) ;) })) (expression_statement "cVar20 = (char)iVar17;" (assignment_expression "cVar20 = (char)iVar17" identifier = (cast_expression "(char)iVar17" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }" if (parenthesized_expression "(iVar11 == -1)" ( (binary_expression "iVar11 == -1" identifier == number_literal) )) (compound_statement "{\n            param_3 = (int *)0x0;\n          }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }))))) (expression_statement "iVar17 = *(int *)pcVar7;" (assignment_expression "iVar17 = *(int *)pcVar7" identifier = (pointer_expression "*(int *)pcVar7" * (cast_expression "(int *)pcVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar16[0x10] = cVar19;" (assignment_expression "puVar16[0x10] = cVar19" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)cVar20;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)cVar20" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(ctype **)(puVar16 + -0x10) = pcVar7;" (assignment_expression "*(ctype **)(puVar16 + -0x10) = pcVar7" (pointer_expression "*(ctype **)(puVar16 + -0x10)" * (cast_expression "(ctype **)(puVar16 + -0x10)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x10);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x10)" identifier = (pointer_expression "*(code **)(iVar17 + 0x10)" * (cast_expression "(code **)(iVar17 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x10)" ( (binary_expression "iVar17 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bc5c" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar19 = (*pcVar2)();" (assignment_expression "cVar19 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar17 = *(int *)pcVar7;" (assignment_expression "iVar17 = *(int *)pcVar7" identifier = (pointer_expression "*(int *)pcVar7" * (cast_expression "(int *)pcVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)*param_10;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)*param_10" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)(char)*param_10" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_10" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_10" * identifier)))) ;) (expression_statement "*(ctype **)(puVar16 + -0x10) = pcVar7;" (assignment_expression "*(ctype **)(puVar16 + -0x10) = pcVar7" (pointer_expression "*(ctype **)(puVar16 + -0x10)" * (cast_expression "(ctype **)(puVar16 + -0x10)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x10);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x10)" identifier = (pointer_expression "*(code **)(iVar17 + 0x10)" * (cast_expression "(code **)(iVar17 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x10)" ( (binary_expression "iVar17 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bc6b" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar20 = (*pcVar2)();" (assignment_expression "cVar20 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (cVar20 != cVar19) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar19 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar19 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar19 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)cVar19;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar19 = (*pcVar2)();\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar20 = (*pcVar2)();\n          if (cVar20 != cVar19) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }" if (parenthesized_expression "(cVar20 != cVar19)" ( (binary_expression "cVar20 != cVar19" identifier != identifier) )) (compound_statement "{\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar19 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar19 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar19 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)cVar19;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar19 = (*pcVar2)();\n          iVar17 = *(int *)pcVar7;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(ctype **)(puVar16 + -0x10) = pcVar7;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar20 = (*pcVar2)();\n          if (cVar20 != cVar19) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }" { (if_statement "if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar19 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar19 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar19 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" if (parenthesized_expression "((param_3 == (int *)0x0) || (puVar16[0x10] == '\0'))" ( (binary_expression "(param_3 == (int *)0x0) || (puVar16[0x10] == '\0')" (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar16[0x10] == '\0')" ( (binary_expression "puVar16[0x10] == '\0'" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            cVar19 = puVar16[0xc];\n          }" { (expression_statement "cVar19 = puVar16[0xc];" (assignment_expression "cVar19 = puVar16[0xc]" identifier = (subscript_expression "puVar16[0xc]" identifier [ number_literal ])) ;) }) (else_clause "else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar19 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar19 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" else (if_statement "if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar19 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar19 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" if (parenthesized_expression "((char *)param_3[2] < (char *)param_3[3])" ( (binary_expression "(char *)param_3[2] < (char *)param_3[3]" (cast_expression "(char *)param_3[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_3[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n            cVar19 = *(char *)param_3[2];\n          }" { (expression_statement "cVar19 = *(char *)param_3[2];" (assignment_expression "cVar19 = *(char *)param_3[2]" identifier = (pointer_expression "*(char *)param_3[2]" * (cast_expression "(char *)param_3[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar19 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" else (compound_statement "{\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar19 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" { (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c50a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c50a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar11 = (*pcVar2)();" (assignment_expression "iVar11 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar17 = -1;" (assignment_expression "iVar17 = -1" identifier = number_literal) ;) (if_statement "if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }" if (parenthesized_expression "(iVar11 != -1)" ( (binary_expression "iVar11 != -1" identifier != number_literal) )) (compound_statement "{\n              iVar17 = iVar11;\n            }" { (expression_statement "iVar17 = iVar11;" (assignment_expression "iVar17 = iVar11" identifier = identifier) ;) })) (expression_statement "cVar19 = (char)iVar17;" (assignment_expression "cVar19 = (char)iVar17" identifier = (cast_expression "(char)iVar17" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }" if (parenthesized_expression "(iVar11 == -1)" ( (binary_expression "iVar11 == -1" identifier == number_literal) )) (compound_statement "{\n              param_3 = (int *)0x0;\n            }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }))))) (expression_statement "iVar17 = *(int *)pcVar7;" (assignment_expression "iVar17 = *(int *)pcVar7" identifier = (pointer_expression "*(int *)pcVar7" * (cast_expression "(int *)pcVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)cVar19;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)cVar19" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)cVar19" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(ctype **)(puVar16 + -0x10) = pcVar7;" (assignment_expression "*(ctype **)(puVar16 + -0x10) = pcVar7" (pointer_expression "*(ctype **)(puVar16 + -0x10)" * (cast_expression "(ctype **)(puVar16 + -0x10)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 8);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 8)" identifier = (pointer_expression "*(code **)(iVar17 + 8)" * (cast_expression "(code **)(iVar17 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bc95;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bc95" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar19 = (*pcVar2)();" (assignment_expression "cVar19 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar17 = *(int *)pcVar7;" (assignment_expression "iVar17 = *(int *)pcVar7" identifier = (pointer_expression "*(int *)pcVar7" * (cast_expression "(int *)pcVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)*param_10;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)*param_10" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)(char)*param_10" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_10" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_10" * identifier)))) ;) (expression_statement "*(ctype **)(puVar16 + -0x10) = pcVar7;" (assignment_expression "*(ctype **)(puVar16 + -0x10) = pcVar7" (pointer_expression "*(ctype **)(puVar16 + -0x10)" * (cast_expression "(ctype **)(puVar16 + -0x10)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 8);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 8)" identifier = (pointer_expression "*(code **)(iVar17 + 8)" * (cast_expression "(code **)(iVar17 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bca4;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bca4" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar20 = (*pcVar2)();" (assignment_expression "cVar20 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (cVar20 != cVar19) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }" if (parenthesized_expression "(cVar20 != cVar19)" ( (binary_expression "cVar20 != cVar19" identifier != identifier) )) (compound_statement "{\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }" { (labeled_statement "LAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;" statement_identifier : (expression_statement "**(undefined4 **)(puVar16 + 0x9c) = 4;" (assignment_expression "**(undefined4 **)(puVar16 + 0x9c) = 4" (pointer_expression "**(undefined4 **)(puVar16 + 0x9c)" * (pointer_expression "*(undefined4 **)(puVar16 + 0x9c)" * (cast_expression "(undefined4 **)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) = number_literal) ;)) (break_statement "break;" break ;) })) })) (if_statement "if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }" if (parenthesized_expression "((uint)param_3[2] < (uint)param_3[3])" ( (binary_expression "(uint)param_3[2] < (uint)param_3[3]" (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          param_3[2] = param_3[2] + 1;\n        }" { (expression_statement "param_3[2] = param_3[2] + 1;" (assignment_expression "param_3[2] = param_3[2] + 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = (binary_expression "param_3[2] + 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }" else (compound_statement "{\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }" { (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x28)" identifier = (pointer_expression "*(code **)(iVar17 + 0x28)" * (cast_expression "(code **)(iVar17 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x28)" ( (binary_expression "iVar17 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c419;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c419" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_10 = param_10 + 1;" (assignment_expression "param_10 = param_10 + 1" identifier = (binary_expression "param_10 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_0027bccc:\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;" statement_identifier : (if_statement "if (*(ctype **)(puVar16 + 0xa8) == param_10) break;" if (parenthesized_expression "(*(ctype **)(puVar16 + 0xa8) == param_10)" ( (binary_expression "*(ctype **)(puVar16 + 0xa8) == param_10" (pointer_expression "*(ctype **)(puVar16 + 0xa8)" * (cast_expression "(ctype **)(puVar16 + 0xa8)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == identifier) )) (break_statement "break;" break ;))) }) (else_clause "else {\nLAB_0027bd69:\n        if (cVar5 != (ctype)0x25) goto LAB_0027bc28;\n        *(ctype **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(ctype **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        cVar6 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar6;\n        cVar5 = pcVar7[(byte)cVar6 + 0x11d];\n        *(ctype *)(puVar16 + 0x10) = cVar5;\n        uVar12 = 0x25;\n        if (cVar5 == (ctype)0x0) {\n          pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n            *(ctype **)(puVar16 + -0x10) = pcVar7;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            cVar6 = (ctype)(*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (cVar6 != (ctype)0x0) {\n            *(ctype *)(puVar16 + 0x10) = cVar6;\n            pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          cVar6 = (ctype)0x0;\n        }\n        else {\nLAB_0027bdcc:\n          cVar6 = *(ctype *)(puVar16 + 0x10);\n          if ((cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f)) {\n            *(ctype **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            cVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;\n            cVar6 = pcVar7[(byte)cVar5 + 0x11d];\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (cVar6 == (ctype)0x0) {\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }\n            else {\n              iVar17 = (int)(char)cVar6;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)cVar6;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        *(ctype *)(puVar16 + 0x2c) = cVar6;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          pcVar8 = use_facet<std::ctype<char>>(*(locale **)(puVar16 + -0x10));\n          uVar12 = puVar16[0x2c];\n          uVar1 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if (pcVar8[0x1c] == (ctype)0x0) {\n            puVar16[0x33] = uVar1;\n            puVar16[0x2c] = uVar12;\n            *(ctype **)(puVar16 + -0x10) = pcVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10));\n            uVar12 = puVar16[0x2c];\n            cVar6 = *(ctype *)(puVar16 + 0x33);\n            pcVar2 = *(code **)(*(int *)pcVar8 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(ctype **)(puVar16 + -0x10) = pcVar8;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              cVar6 = (ctype)(*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            cVar6 = pcVar8[0x42];\n          }\n          *(ctype *)(puVar16 + 0x5c) = cVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          _M_extract_via_format();\n          iVar17 = *(int *)(puVar16 + 0x4c);\n          param_3 = *(int **)(puVar16 + 0x48);\n          *(int *)(puVar16 + 0x1c) = iVar17;\n          *(int *)(puVar16 + 0xc) = iVar17;\n          *(int **)(puVar16 + 0x18) = param_3;\n          bVar14 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar19 = iVar17 == -1;\n          if ((bVar14) && (cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0x10] = bVar14;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar19 = puVar16[0x10];\n            }\n          }\n          if ((*(int *)(puVar16 + 8) == 0) || (puVar16[0x32] == '\0')) {\n            cVar20 = puVar16[0x32];\n          }\n          else {\n            cVar20 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }\n          }\n          if (cVar20 == cVar19) {\n            **(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n          puVar16 = puVar16 + -4;\n        }\n        param_10 = (ctype *)(*(int *)(puVar16 + 0x28) + 1);\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }" else (compound_statement "{\nLAB_0027bd69:\n        if (cVar5 != (ctype)0x25) goto LAB_0027bc28;\n        *(ctype **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(ctype **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        cVar6 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar6;\n        cVar5 = pcVar7[(byte)cVar6 + 0x11d];\n        *(ctype *)(puVar16 + 0x10) = cVar5;\n        uVar12 = 0x25;\n        if (cVar5 == (ctype)0x0) {\n          pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n            *(ctype **)(puVar16 + -0x10) = pcVar7;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            cVar6 = (ctype)(*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (cVar6 != (ctype)0x0) {\n            *(ctype *)(puVar16 + 0x10) = cVar6;\n            pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          cVar6 = (ctype)0x0;\n        }\n        else {\nLAB_0027bdcc:\n          cVar6 = *(ctype *)(puVar16 + 0x10);\n          if ((cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f)) {\n            *(ctype **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            cVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;\n            cVar6 = pcVar7[(byte)cVar5 + 0x11d];\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (cVar6 == (ctype)0x0) {\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }\n            else {\n              iVar17 = (int)(char)cVar6;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)cVar6;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        *(ctype *)(puVar16 + 0x2c) = cVar6;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          pcVar8 = use_facet<std::ctype<char>>(*(locale **)(puVar16 + -0x10));\n          uVar12 = puVar16[0x2c];\n          uVar1 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if (pcVar8[0x1c] == (ctype)0x0) {\n            puVar16[0x33] = uVar1;\n            puVar16[0x2c] = uVar12;\n            *(ctype **)(puVar16 + -0x10) = pcVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10));\n            uVar12 = puVar16[0x2c];\n            cVar6 = *(ctype *)(puVar16 + 0x33);\n            pcVar2 = *(code **)(*(int *)pcVar8 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(ctype **)(puVar16 + -0x10) = pcVar8;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              cVar6 = (ctype)(*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            cVar6 = pcVar8[0x42];\n          }\n          *(ctype *)(puVar16 + 0x5c) = cVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          _M_extract_via_format();\n          iVar17 = *(int *)(puVar16 + 0x4c);\n          param_3 = *(int **)(puVar16 + 0x48);\n          *(int *)(puVar16 + 0x1c) = iVar17;\n          *(int *)(puVar16 + 0xc) = iVar17;\n          *(int **)(puVar16 + 0x18) = param_3;\n          bVar14 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar19 = iVar17 == -1;\n          if ((bVar14) && (cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0x10] = bVar14;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar19 = puVar16[0x10];\n            }\n          }\n          if ((*(int *)(puVar16 + 8) == 0) || (puVar16[0x32] == '\0')) {\n            cVar20 = puVar16[0x32];\n          }\n          else {\n            cVar20 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }\n          }\n          if (cVar20 == cVar19) {\n            **(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n          puVar16 = puVar16 + -4;\n        }\n        param_10 = (ctype *)(*(int *)(puVar16 + 0x28) + 1);\n        if (*(ctype **)(puVar16 + 0xa8) == param_10) break;\n      }" { (labeled_statement "LAB_0027bd69:\n        if (cVar5 != (ctype)0x25) goto LAB_0027bc28;" statement_identifier : (if_statement "if (cVar5 != (ctype)0x25) goto LAB_0027bc28;" if (parenthesized_expression "(cVar5 != (ctype)0x25)" ( (binary_expression "cVar5 != (ctype)0x25" identifier != (cast_expression "(ctype)0x25" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0027bc28;" goto statement_identifier ;))) (expression_statement "*(ctype **)(puVar16 + 0x28) = param_10 + 1;" (assignment_expression "*(ctype **)(puVar16 + 0x28) = param_10 + 1" (pointer_expression "*(ctype **)(puVar16 + 0x28)" * (cast_expression "(ctype **)(puVar16 + 0x28)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) = (binary_expression "param_10 + 1" identifier + number_literal)) ;) (if_statement "if (*(ctype **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;" if (parenthesized_expression "(*(ctype **)(puVar16 + 0xa8) == param_10 + 1)" ( (binary_expression "*(ctype **)(puVar16 + 0xa8) == param_10 + 1" (pointer_expression "*(ctype **)(puVar16 + 0xa8)" * (cast_expression "(ctype **)(puVar16 + 0xa8)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == (binary_expression "param_10 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_0027c4c0;" goto statement_identifier ;)) (expression_statement "cVar6 = param_10[1];" (assignment_expression "cVar6 = param_10[1]" identifier = (subscript_expression "param_10[1]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar6;" (assignment_expression "*(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar6" (pointer_expression "*(uint *)(puVar16 + 0x2c)" * (cast_expression "(uint *)(puVar16 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = (cast_expression "(uint)(byte)cVar6" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)cVar6" ( (type_descriptor "byte" type_identifier) ) identifier))) ;) (expression_statement "cVar5 = pcVar7[(byte)cVar6 + 0x11d];" (assignment_expression "cVar5 = pcVar7[(byte)cVar6 + 0x11d]" identifier = (subscript_expression "pcVar7[(byte)cVar6 + 0x11d]" identifier [ (binary_expression "(byte)cVar6 + 0x11d" (cast_expression "(byte)cVar6" ( (type_descriptor "byte" type_identifier) ) identifier) + number_literal) ])) ;) (expression_statement "*(ctype *)(puVar16 + 0x10) = cVar5;" (assignment_expression "*(ctype *)(puVar16 + 0x10) = cVar5" (pointer_expression "*(ctype *)(puVar16 + 0x10)" * (cast_expression "(ctype *)(puVar16 + 0x10)" ( (type_descriptor "ctype *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar12 = 0x25;" (assignment_expression "uVar12 = 0x25" identifier = number_literal) ;) (if_statement "if (cVar5 == (ctype)0x0) {\n          pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n            *(ctype **)(puVar16 + -0x10) = pcVar7;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            cVar6 = (ctype)(*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (cVar6 != (ctype)0x0) {\n            *(ctype *)(puVar16 + 0x10) = cVar6;\n            pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          cVar6 = (ctype)0x0;\n        }\n        else {\nLAB_0027bdcc:\n          cVar6 = *(ctype *)(puVar16 + 0x10);\n          if ((cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f)) {\n            *(ctype **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            cVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;\n            cVar6 = pcVar7[(byte)cVar5 + 0x11d];\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (cVar6 == (ctype)0x0) {\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }\n            else {\n              iVar17 = (int)(char)cVar6;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)cVar6;\n            puVar16[0x10] = 0;\n          }\n        }" if (parenthesized_expression "(cVar5 == (ctype)0x0)" ( (binary_expression "cVar5 == (ctype)0x0" identifier == (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n          pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n            *(ctype **)(puVar16 + -0x10) = pcVar7;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            cVar6 = (ctype)(*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (cVar6 != (ctype)0x0) {\n            *(ctype *)(puVar16 + 0x10) = cVar6;\n            pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          cVar6 = (ctype)0x0;\n        }" { (expression_statement "pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);" (assignment_expression "pcVar2 = *(code **)(*(int *)pcVar7 + 0x20)" identifier = (pointer_expression "*(code **)(*(int *)pcVar7 + 0x20)" * (cast_expression "(code **)(*(int *)pcVar7 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pcVar7 + 0x20)" ( (binary_expression "*(int *)pcVar7 + 0x20" (pointer_expression "*(int *)pcVar7" * (cast_expression "(int *)pcVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n            *(ctype **)(puVar16 + -0x10) = pcVar7;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            cVar6 = (ctype)(*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }" if (parenthesized_expression "(pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c))" ( (binary_expression "pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" identifier != (pointer_expression "*(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" * (cast_expression "(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + 0x14) + -0x24c)" ( (binary_expression "*(int *)(puVar16 + 0x14) + -0x24c" (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)cVar6;\n            *(ctype **)(puVar16 + -0x10) = pcVar7;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            cVar6 = (ctype)(*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }" { (expression_statement "puVar16[0x10] = 0x25;" (assignment_expression "puVar16[0x10] = 0x25" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)cVar6;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)cVar6" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)(char)cVar6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)cVar6" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "*(ctype **)(puVar16 + -0x10) = pcVar7;" (assignment_expression "*(ctype **)(puVar16 + -0x10) = pcVar7" (pointer_expression "*(ctype **)(puVar16 + -0x10)" * (cast_expression "(ctype **)(puVar16 + -0x10)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c3f8" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar6 = (ctype)(*pcVar2)();" (assignment_expression "cVar6 = (ctype)(*pcVar2)()" identifier = (call_expression "(ctype)(*pcVar2)()" (call_expression "(ctype)(*pcVar2)" (parenthesized_expression "(ctype)" ( identifier )) (argument_list "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) ))) (argument_list "()" ( )))) ;) (expression_statement "uVar12 = puVar16[0x10];" (assignment_expression "uVar12 = puVar16[0x10]" identifier = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;) })) (if_statement "if (cVar6 != (ctype)0x0) {\n            *(ctype *)(puVar16 + 0x10) = cVar6;\n            pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n            goto LAB_0027bdcc;\n          }" if (parenthesized_expression "(cVar6 != (ctype)0x0)" ( (binary_expression "cVar6 != (ctype)0x0" identifier != (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n            *(ctype *)(puVar16 + 0x10) = cVar6;\n            pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n            goto LAB_0027bdcc;\n          }" { (expression_statement "*(ctype *)(puVar16 + 0x10) = cVar6;" (assignment_expression "*(ctype *)(puVar16 + 0x10) = cVar6" (pointer_expression "*(ctype *)(puVar16 + 0x10)" * (cast_expression "(ctype *)(puVar16 + 0x10)" ( (type_descriptor "ctype *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;" (assignment_expression "pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6" (subscript_expression "pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d]" identifier [ (binary_expression "*(int *)(puVar16 + 0x2c) + 0x11d" (pointer_expression "*(int *)(puVar16 + 0x2c)" * (cast_expression "(int *)(puVar16 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) + number_literal) ]) = identifier) ;) (goto_statement "goto LAB_0027bdcc;" goto statement_identifier ;) })) (expression_statement "puVar16[0x10] = 0;" (assignment_expression "puVar16[0x10] = 0" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x3c) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x3c) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" * (cast_expression "(undefined4 *)(puVar16 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar6 = (ctype)0x0;" (assignment_expression "cVar6 = (ctype)0x0" identifier = (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) ;) }) (else_clause "else {\nLAB_0027bdcc:\n          cVar6 = *(ctype *)(puVar16 + 0x10);\n          if ((cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f)) {\n            *(ctype **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            cVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;\n            cVar6 = pcVar7[(byte)cVar5 + 0x11d];\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (cVar6 == (ctype)0x0) {\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }\n            else {\n              iVar17 = (int)(char)cVar6;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)cVar6;\n            puVar16[0x10] = 0;\n          }\n        }" else (compound_statement "{\nLAB_0027bdcc:\n          cVar6 = *(ctype *)(puVar16 + 0x10);\n          if ((cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f)) {\n            *(ctype **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            cVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;\n            cVar6 = pcVar7[(byte)cVar5 + 0x11d];\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (cVar6 == (ctype)0x0) {\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }\n            else {\n              iVar17 = (int)(char)cVar6;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)cVar6;\n            puVar16[0x10] = 0;\n          }\n        }" { (labeled_statement "LAB_0027bdcc:\n          cVar6 = *(ctype *)(puVar16 + 0x10);" statement_identifier : (expression_statement "cVar6 = *(ctype *)(puVar16 + 0x10);" (assignment_expression "cVar6 = *(ctype *)(puVar16 + 0x10)" identifier = (pointer_expression "*(ctype *)(puVar16 + 0x10)" * (cast_expression "(ctype *)(puVar16 + 0x10)" ( (type_descriptor "ctype *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;)) (if_statement "if ((cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f)) {\n            *(ctype **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            cVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;\n            cVar6 = pcVar7[(byte)cVar5 + 0x11d];\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (cVar6 == (ctype)0x0) {\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }\n            else {\n              iVar17 = (int)(char)cVar6;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)cVar6;\n            puVar16[0x10] = 0;\n          }" if (parenthesized_expression "((cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f))" ( (binary_expression "(cVar6 == (ctype)0x45) || (cVar6 == (ctype)0x4f)" (parenthesized_expression "(cVar6 == (ctype)0x45)" ( (binary_expression "cVar6 == (ctype)0x45" identifier == (cast_expression "(ctype)0x45" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) || (parenthesized_expression "(cVar6 == (ctype)0x4f)" ( (binary_expression "cVar6 == (ctype)0x4f" identifier == (cast_expression "(ctype)0x4f" ( (type_descriptor "ctype" type_identifier) ) number_literal)) ))) )) (compound_statement "{\n            *(ctype **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            cVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;\n            cVar6 = pcVar7[(byte)cVar5 + 0x11d];\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (cVar6 == (ctype)0x0) {\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }\n            else {\n              iVar17 = (int)(char)cVar6;\n            }\n          }" { (expression_statement "*(ctype **)(puVar16 + 0x28) = param_10 + 2;" (assignment_expression "*(ctype **)(puVar16 + 0x28) = param_10 + 2" (pointer_expression "*(ctype **)(puVar16 + 0x28)" * (cast_expression "(ctype **)(puVar16 + 0x28)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) = (binary_expression "param_10 + 2" identifier + number_literal)) ;) (if_statement "if (*(ctype **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;" if (parenthesized_expression "(*(ctype **)(puVar16 + 0xa8) == param_10 + 2)" ( (binary_expression "*(ctype **)(puVar16 + 0xa8) == param_10 + 2" (pointer_expression "*(ctype **)(puVar16 + 0xa8)" * (cast_expression "(ctype **)(puVar16 + 0xa8)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == (binary_expression "param_10 + 2" identifier + number_literal)) )) (goto_statement "goto LAB_0027c4c0;" goto statement_identifier ;)) (expression_statement "cVar5 = param_10[2];" (assignment_expression "cVar5 = param_10[2]" identifier = (subscript_expression "param_10[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5;" (assignment_expression "*(uint *)(puVar16 + 0x2c) = (uint)(byte)cVar5" (pointer_expression "*(uint *)(puVar16 + 0x2c)" * (cast_expression "(uint *)(puVar16 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = (cast_expression "(uint)(byte)cVar5" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)cVar5" ( (type_descriptor "byte" type_identifier) ) identifier))) ;) (expression_statement "cVar6 = pcVar7[(byte)cVar5 + 0x11d];" (assignment_expression "cVar6 = pcVar7[(byte)cVar5 + 0x11d]" identifier = (subscript_expression "pcVar7[(byte)cVar5 + 0x11d]" identifier [ (binary_expression "(byte)cVar5 + 0x11d" (cast_expression "(byte)cVar5" ( (type_descriptor "byte" type_identifier) ) identifier) + number_literal) ])) ;) (expression_statement "*(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];" (assignment_expression "*(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10]" (pointer_expression "*(int *)(puVar16 + 0x3c)" * (cast_expression "(int *)(puVar16 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) )))) = (cast_expression "(int)(char)puVar16[0x10]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)puVar16[0x10]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar16[0x10]" identifier [ number_literal ])))) ;) (if_statement "if (cVar6 == (ctype)0x0) {\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }\n            else {\n              iVar17 = (int)(char)cVar6;\n            }" if (parenthesized_expression "(cVar6 == (ctype)0x0)" ( (binary_expression "cVar6 == (ctype)0x0" identifier == (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n              iVar17 = (int)(char)cVar5;\n              pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);\n              cVar6 = cVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }\n              if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }\n            }" { (expression_statement "iVar17 = (int)(char)cVar5;" (assignment_expression "iVar17 = (int)(char)cVar5" identifier = (cast_expression "(int)(char)cVar5" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)cVar5" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "pcVar2 = *(code **)(*(int *)pcVar7 + 0x20);" (assignment_expression "pcVar2 = *(code **)(*(int *)pcVar7 + 0x20)" identifier = (pointer_expression "*(code **)(*(int *)pcVar7 + 0x20)" * (cast_expression "(code **)(*(int *)pcVar7 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pcVar7 + 0x20)" ( (binary_expression "*(int *)pcVar7 + 0x20" (pointer_expression "*(int *)pcVar7" * (cast_expression "(int *)pcVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (expression_statement "cVar6 = cVar5;" (assignment_expression "cVar6 = cVar5" identifier = identifier) ;) (if_statement "if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }" if (parenthesized_expression "(pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c))" ( (binary_expression "pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" identifier != (pointer_expression "*(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" * (cast_expression "(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + 0x14) + -0x24c)" ( (binary_expression "*(int *)(puVar16 + 0x14) + -0x24c" (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(ctype **)(puVar16 + -0x10) = pcVar7;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                cVar6 = (ctype)(*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)cVar6;\n              }" { (expression_statement "puVar16[0x33] = uVar12;" (assignment_expression "puVar16[0x33] = uVar12" (subscript_expression "puVar16[0x33]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = iVar17;" (assignment_expression "*(int *)(puVar16 + -0xc) = iVar17" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(ctype **)(puVar16 + -0x10) = pcVar7;" (assignment_expression "*(ctype **)(puVar16 + -0x10) = pcVar7" (pointer_expression "*(ctype **)(puVar16 + -0x10)" * (cast_expression "(ctype **)(puVar16 + -0x10)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c4a2" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar6 = (ctype)(*pcVar2)();" (assignment_expression "cVar6 = (ctype)(*pcVar2)()" identifier = (call_expression "(ctype)(*pcVar2)()" (call_expression "(ctype)(*pcVar2)" (parenthesized_expression "(ctype)" ( identifier )) (argument_list "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) ))) (argument_list "()" ( )))) ;) (expression_statement "uVar12 = puVar16[0x33];" (assignment_expression "uVar12 = puVar16[0x33]" identifier = (subscript_expression "puVar16[0x33]" identifier [ number_literal ])) ;) (expression_statement "iVar17 = (int)(char)cVar6;" (assignment_expression "iVar17 = (int)(char)cVar6" identifier = (cast_expression "(int)(char)cVar6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)cVar6" ( (type_descriptor "char" primitive_type) ) identifier))) ;) })) (if_statement "if (cVar6 != (ctype)0x0) {\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }" if (parenthesized_expression "(cVar6 != (ctype)0x0)" ( (binary_expression "cVar6 != (ctype)0x0" identifier != (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n                pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;\n              }" { (expression_statement "pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6;" (assignment_expression "pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d] = cVar6" (subscript_expression "pcVar7[*(int *)(puVar16 + 0x2c) + 0x11d]" identifier [ (binary_expression "*(int *)(puVar16 + 0x2c) + 0x11d" (pointer_expression "*(int *)(puVar16 + 0x2c)" * (cast_expression "(int *)(puVar16 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) + number_literal) ]) = identifier) ;) })) }) (else_clause "else {\n              iVar17 = (int)(char)cVar6;\n            }" else (compound_statement "{\n              iVar17 = (int)(char)cVar6;\n            }" { (expression_statement "iVar17 = (int)(char)cVar6;" (assignment_expression "iVar17 = (int)(char)cVar6" identifier = (cast_expression "(int)(char)cVar6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)cVar6" ( (type_descriptor "char" primitive_type) ) identifier))) ;) }))) }) (else_clause "else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)cVar6;\n            puVar16[0x10] = 0;\n          }" else (compound_statement "{\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)cVar6;\n            puVar16[0x10] = 0;\n          }" { (expression_statement "*(undefined4 *)(puVar16 + 0x3c) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x3c) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" * (cast_expression "(undefined4 *)(puVar16 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (int)(char)cVar6;" (assignment_expression "iVar17 = (int)(char)cVar6" identifier = (cast_expression "(int)(char)cVar6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)cVar6" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "puVar16[0x10] = 0;" (assignment_expression "puVar16[0x10] = 0" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = number_literal) ;) }))) }))) (expression_statement "puVar16[0x33] = uVar12;" (assignment_expression "puVar16[0x33] = uVar12" (subscript_expression "puVar16[0x33]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(ctype *)(puVar16 + 0x2c) = cVar6;" (assignment_expression "*(ctype *)(puVar16 + 0x2c) = cVar6" (pointer_expression "*(ctype *)(puVar16 + 0x2c)" * (cast_expression "(ctype *)(puVar16 + 0x2c)" ( (type_descriptor "ctype *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);" (assignment_expression "pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20)" identifier = (pointer_expression "*(code **)(**(int **)(puVar16 + 0x84) + 0x20)" * (cast_expression "(code **)(**(int **)(puVar16 + 0x84) + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(puVar16 + 0x84) + 0x20)" ( (binary_expression "**(int **)(puVar16 + 0x84) + 0x20" (pointer_expression "**(int **)(puVar16 + 0x84)" * (pointer_expression "*(int **)(puVar16 + 0x84)" * (cast_expression "(int **)(puVar16 + 0x84)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          pcVar8 = use_facet<std::ctype<char>>(*(locale **)(puVar16 + -0x10));\n          uVar12 = puVar16[0x2c];\n          uVar1 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if (pcVar8[0x1c] == (ctype)0x0) {\n            puVar16[0x33] = uVar1;\n            puVar16[0x2c] = uVar12;\n            *(ctype **)(puVar16 + -0x10) = pcVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10));\n            uVar12 = puVar16[0x2c];\n            cVar6 = *(ctype *)(puVar16 + 0x33);\n            pcVar2 = *(code **)(*(int *)pcVar8 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(ctype **)(puVar16 + -0x10) = pcVar8;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              cVar6 = (ctype)(*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            cVar6 = pcVar8[0x42];\n          }\n          *(ctype *)(puVar16 + 0x5c) = cVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          _M_extract_via_format();\n          iVar17 = *(int *)(puVar16 + 0x4c);\n          param_3 = *(int **)(puVar16 + 0x48);\n          *(int *)(puVar16 + 0x1c) = iVar17;\n          *(int *)(puVar16 + 0xc) = iVar17;\n          *(int **)(puVar16 + 0x18) = param_3;\n          bVar14 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar19 = iVar17 == -1;\n          if ((bVar14) && (cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0x10] = bVar14;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar19 = puVar16[0x10];\n            }\n          }\n          if ((*(int *)(puVar16 + 8) == 0) || (puVar16[0x32] == '\0')) {\n            cVar20 = puVar16[0x32];\n          }\n          else {\n            cVar20 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }\n          }\n          if (cVar20 == cVar19) {\n            **(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n          puVar16 = puVar16 + -4;\n        }" if (parenthesized_expression "(pcVar2 == *(code **)(puVar16 + 0x38))" ( (binary_expression "pcVar2 == *(code **)(puVar16 + 0x38)" identifier == (pointer_expression "*(code **)(puVar16 + 0x38)" * (cast_expression "(code **)(puVar16 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) )) (compound_statement "{\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          pcVar8 = use_facet<std::ctype<char>>(*(locale **)(puVar16 + -0x10));\n          uVar12 = puVar16[0x2c];\n          uVar1 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if (pcVar8[0x1c] == (ctype)0x0) {\n            puVar16[0x33] = uVar1;\n            puVar16[0x2c] = uVar12;\n            *(ctype **)(puVar16 + -0x10) = pcVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10));\n            uVar12 = puVar16[0x2c];\n            cVar6 = *(ctype *)(puVar16 + 0x33);\n            pcVar2 = *(code **)(*(int *)pcVar8 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(ctype **)(puVar16 + -0x10) = pcVar8;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              cVar6 = (ctype)(*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            cVar6 = pcVar8[0x42];\n          }\n          *(ctype *)(puVar16 + 0x5c) = cVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          _M_extract_via_format();\n          iVar17 = *(int *)(puVar16 + 0x4c);\n          param_3 = *(int **)(puVar16 + 0x48);\n          *(int *)(puVar16 + 0x1c) = iVar17;\n          *(int *)(puVar16 + 0xc) = iVar17;\n          *(int **)(puVar16 + 0x18) = param_3;\n          bVar14 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar19 = iVar17 == -1;\n          if ((bVar14) && (cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0x10] = bVar14;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar19 = puVar16[0x10];\n            }\n          }\n          if ((*(int *)(puVar16 + 8) == 0) || (puVar16[0x32] == '\0')) {\n            cVar20 = puVar16[0x32];\n          }\n          else {\n            cVar20 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }\n          }\n          if (cVar20 == cVar19) {\n            **(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2;\n          }\n        }" { (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x40)" * (cast_expression "(undefined4 *)(puVar16 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x40)" ( (binary_expression "puVar16 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27be21;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27be21" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pcVar8 = use_facet<std::ctype<char>>(*(locale **)(puVar16 + -0x10));" (binary_expression "pcVar8 = use_facet<std::ctype<char>>(*(locale **)(puVar16 + -0x10))" (assignment_expression "pcVar8 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::ctype" : : identifier) < (binary_expression "char>>(*(locale **)(puVar16 + -0x10))" identifier >> (parenthesized_expression "(*(locale **)(puVar16 + -0x10))" ( (pointer_expression "*(locale **)(puVar16 + -0x10)" * (cast_expression "(locale **)(puVar16 + -0x10)" ( (type_descriptor "locale **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) )))) ;) (expression_statement "uVar12 = puVar16[0x2c];" (assignment_expression "uVar12 = puVar16[0x2c]" identifier = (subscript_expression "puVar16[0x2c]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = puVar16[0x33];" (assignment_expression "uVar1 = puVar16[0x33]" identifier = (subscript_expression "puVar16[0x33]" identifier [ number_literal ])) ;) (expression_statement "**(undefined4 **)(puVar16 + 0x9c) = 0;" (assignment_expression "**(undefined4 **)(puVar16 + 0x9c) = 0" (pointer_expression "**(undefined4 **)(puVar16 + 0x9c)" * (pointer_expression "*(undefined4 **)(puVar16 + 0x9c)" * (cast_expression "(undefined4 **)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) = number_literal) ;) (if_statement "if (pcVar8[0x1c] == (ctype)0x0) {\n            puVar16[0x33] = uVar1;\n            puVar16[0x2c] = uVar12;\n            *(ctype **)(puVar16 + -0x10) = pcVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10));\n            uVar12 = puVar16[0x2c];\n            cVar6 = *(ctype *)(puVar16 + 0x33);\n            pcVar2 = *(code **)(*(int *)pcVar8 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(ctype **)(puVar16 + -0x10) = pcVar8;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              cVar6 = (ctype)(*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            cVar6 = pcVar8[0x42];\n          }" if (parenthesized_expression "(pcVar8[0x1c] == (ctype)0x0)" ( (binary_expression "pcVar8[0x1c] == (ctype)0x0" (subscript_expression "pcVar8[0x1c]" identifier [ number_literal ]) == (cast_expression "(ctype)0x0" ( (type_descriptor "ctype" type_identifier) ) number_literal)) )) (compound_statement "{\n            puVar16[0x33] = uVar1;\n            puVar16[0x2c] = uVar12;\n            *(ctype **)(puVar16 + -0x10) = pcVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10));\n            uVar12 = puVar16[0x2c];\n            cVar6 = *(ctype *)(puVar16 + 0x33);\n            pcVar2 = *(code **)(*(int *)pcVar8 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(ctype **)(puVar16 + -0x10) = pcVar8;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              cVar6 = (ctype)(*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }" { (expression_statement "puVar16[0x33] = uVar1;" (assignment_expression "puVar16[0x33] = uVar1" (subscript_expression "puVar16[0x33]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16[0x2c] = uVar12;" (assignment_expression "puVar16[0x2c] = uVar12" (subscript_expression "puVar16[0x2c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(ctype **)(puVar16 + -0x10) = pcVar8;" (assignment_expression "*(ctype **)(puVar16 + -0x10) = pcVar8" (pointer_expression "*(ctype **)(puVar16 + -0x10)" * (cast_expression "(ctype **)(puVar16 + -0x10)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c1b5" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10));" (binary_expression "ctype<char>::_M_widen_init(*(ctype<char> **)(puVar16 + -0x10))" (binary_expression "ctype<char" identifier < identifier) > (ERROR "::" : :) (call_expression "_M_widen_init(*(ctype<char> **)(puVar16 + -0x10))" identifier (argument_list "(*(ctype<char> **)(puVar16 + -0x10))" ( (pointer_expression "*(ctype<char> **)(puVar16 + -0x10)" * (call_expression "(ctype<char> **)(puVar16 + -0x10)" (parenthesized_expression "(ctype<char> **)" ( (binary_expression "ctype<char> **" (binary_expression "ctype<char" identifier < identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) )))) ;) (expression_statement "uVar12 = puVar16[0x2c];" (assignment_expression "uVar12 = puVar16[0x2c]" identifier = (subscript_expression "puVar16[0x2c]" identifier [ number_literal ])) ;) (expression_statement "cVar6 = *(ctype *)(puVar16 + 0x33);" (assignment_expression "cVar6 = *(ctype *)(puVar16 + 0x33)" identifier = (pointer_expression "*(ctype *)(puVar16 + 0x33)" * (cast_expression "(ctype *)(puVar16 + 0x33)" ( (type_descriptor "ctype *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x33)" ( (binary_expression "puVar16 + 0x33" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = *(code **)(*(int *)pcVar8 + 0x18);" (assignment_expression "pcVar2 = *(code **)(*(int *)pcVar8 + 0x18)" identifier = (pointer_expression "*(code **)(*(int *)pcVar8 + 0x18)" * (cast_expression "(code **)(*(int *)pcVar8 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pcVar8 + 0x18)" ( (binary_expression "*(int *)pcVar8 + 0x18" (pointer_expression "*(int *)pcVar8" * (cast_expression "(int *)pcVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(ctype **)(puVar16 + -0x10) = pcVar8;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              cVar6 = (ctype)(*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }" if (parenthesized_expression "(pcVar2 != *(code **)(puVar16 + 0x44))" ( (binary_expression "pcVar2 != *(code **)(puVar16 + 0x44)" identifier != (pointer_expression "*(code **)(puVar16 + 0x44)" * (cast_expression "(code **)(puVar16 + 0x44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) )) (compound_statement "{\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(ctype **)(puVar16 + -0x10) = pcVar8;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              cVar6 = (ctype)(*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }" { (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 0x25;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 0x25" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(ctype **)(puVar16 + -0x10) = pcVar8;" (assignment_expression "*(ctype **)(puVar16 + -0x10) = pcVar8" (pointer_expression "*(ctype **)(puVar16 + -0x10)" * (cast_expression "(ctype **)(puVar16 + -0x10)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c1da;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c1da" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar6 = (ctype)(*pcVar2)();" (assignment_expression "cVar6 = (ctype)(*pcVar2)()" identifier = (call_expression "(ctype)(*pcVar2)()" (call_expression "(ctype)(*pcVar2)" (parenthesized_expression "(ctype)" ( identifier )) (argument_list "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) ))) (argument_list "()" ( )))) ;) (expression_statement "uVar12 = puVar16[0x2c];" (assignment_expression "uVar12 = puVar16[0x2c]" identifier = (subscript_expression "puVar16[0x2c]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n            cVar6 = pcVar8[0x42];\n          }" else (compound_statement "{\n            cVar6 = pcVar8[0x42];\n          }" { (expression_statement "cVar6 = pcVar8[0x42];" (assignment_expression "cVar6 = pcVar8[0x42]" identifier = (subscript_expression "pcVar8[0x42]" identifier [ number_literal ])) ;) }))) (expression_statement "*(ctype *)(puVar16 + 0x5c) = cVar6;" (assignment_expression "*(ctype *)(puVar16 + 0x5c) = cVar6" (pointer_expression "*(ctype *)(puVar16 + 0x5c)" * (cast_expression "(ctype *)(puVar16 + 0x5c)" ( (type_descriptor "ctype *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x5c)" ( (binary_expression "puVar16 + 0x5c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }" if (parenthesized_expression "(puVar16[0x10] == '\0')" ( (binary_expression "puVar16[0x10] == '\0'" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }" { (expression_statement "puVar16[0x5d] = uVar12;" (assignment_expression "puVar16[0x5d] = uVar12" (subscript_expression "puVar16[0x5d]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16[0x5e] = 0;" (assignment_expression "puVar16[0x5e] = 0" (subscript_expression "puVar16[0x5e]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }" else (compound_statement "{\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }" { (expression_statement "puVar16[0x5e] = uVar12;" (assignment_expression "puVar16[0x5e] = uVar12" (subscript_expression "puVar16[0x5e]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16[0x5f] = 0;" (assignment_expression "puVar16[0x5f] = 0" (subscript_expression "puVar16[0x5f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar16[0x5d] = puVar16[0x10];" (assignment_expression "puVar16[0x5d] = puVar16[0x10]" (subscript_expression "puVar16[0x5d]" identifier [ number_literal ]) = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;) }))) (expression_statement "*(int **)(puVar16 + 0x18) = param_3;" (assignment_expression "*(int **)(puVar16 + 0x18) = param_3" (pointer_expression "*(int **)(puVar16 + 0x18)" * (cast_expression "(int **)(puVar16 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x18)" ( (binary_expression "puVar16 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);" (assignment_expression "*(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc)" (pointer_expression "*(undefined4 *)(puVar16 + 0x1c)" * (cast_expression "(undefined4 *)(puVar16 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);" (assignment_expression "*(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8)" (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" * (cast_expression "(undefined4 *)(puVar16 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);" (assignment_expression "*(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34)" (pointer_expression "*(undefined4 *)(puVar16 + 0x24)" * (cast_expression "(undefined4 *)(puVar16 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x34)" * (cast_expression "(undefined4 *)(puVar16 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;" (assignment_expression "*(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c" (pointer_expression "*(undefined1 **)(puVar16 + -0xc)" * (cast_expression "(undefined1 **)(puVar16 + -0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x5c" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0xa0)" * (cast_expression "(undefined4 *)(puVar16 + 0xa0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xa0)" ( (binary_expression "puVar16 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x9c)" * (cast_expression "(undefined4 *)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x98)" * (cast_expression "(undefined4 *)(puVar16 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x98)" ( (binary_expression "puVar16 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" * (cast_expression "(undefined4 *)(puVar16 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x24)" * (cast_expression "(undefined4 *)(puVar16 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" * (cast_expression "(undefined4 *)(puVar16 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" * (cast_expression "(undefined4 *)(puVar16 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x1c)" * (cast_expression "(undefined4 *)(puVar16 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18)" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" * (cast_expression "(undefined4 *)(puVar16 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x18)" * (cast_expression "(undefined4 *)(puVar16 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x18)" ( (binary_expression "puVar16 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x2c)" * (cast_expression "(undefined4 *)(puVar16 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x2c)" ( (binary_expression "puVar16 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x84)" * (cast_expression "(undefined4 *)(puVar16 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;" (assignment_expression "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48" (pointer_expression "*(undefined1 **)(puVar16 + -0x30)" * (cast_expression "(undefined1 **)(puVar16 + -0x30)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x30)" ( (binary_expression "puVar16 + -0x30" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x48" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x34) = 0x27bec1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = 0x27bec1" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "_M_extract_via_format();" (call_expression "_M_extract_via_format()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar17 = *(int *)(puVar16 + 0x4c);" (assignment_expression "iVar17 = *(int *)(puVar16 + 0x4c)" identifier = (pointer_expression "*(int *)(puVar16 + 0x4c)" * (cast_expression "(int *)(puVar16 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x4c)" ( (binary_expression "puVar16 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "param_3 = *(int **)(puVar16 + 0x48);" (assignment_expression "param_3 = *(int **)(puVar16 + 0x48)" identifier = (pointer_expression "*(int **)(puVar16 + 0x48)" * (cast_expression "(int **)(puVar16 + 0x48)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x48)" ( (binary_expression "puVar16 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 0x1c) = iVar17;" (assignment_expression "*(int *)(puVar16 + 0x1c) = iVar17" (pointer_expression "*(int *)(puVar16 + 0x1c)" * (cast_expression "(int *)(puVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + 0xc) = iVar17;" (assignment_expression "*(int *)(puVar16 + 0xc) = iVar17" (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + 0x18) = param_3;" (assignment_expression "*(int **)(puVar16 + 0x18) = param_3" (pointer_expression "*(int **)(puVar16 + 0x18)" * (cast_expression "(int **)(puVar16 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x18)" ( (binary_expression "puVar16 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "bVar14 = param_3 != (int *)0x0 && iVar17 == -1;" (assignment_expression "bVar14 = param_3 != (int *)0x0 && iVar17 == -1" identifier = (binary_expression "param_3 != (int *)0x0 && iVar17 == -1" (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "iVar17 == -1" identifier == number_literal))) ;) (expression_statement "cVar19 = iVar17 == -1;" (assignment_expression "cVar19 = iVar17 == -1" identifier = (binary_expression "iVar17 == -1" identifier == number_literal)) ;) (if_statement "if ((bVar14) && (cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0x10] = bVar14;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar19 = puVar16[0x10];\n            }\n          }" if (parenthesized_expression "((bVar14) && (cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2]))" ( (binary_expression "(bVar14) && (cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2])" (parenthesized_expression "(bVar14)" ( identifier )) && (parenthesized_expression "(cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2])" ( (comma_expression "cVar19 = '\0', (uint)param_3[3] <= (uint)param_3[2]" (assignment_expression "cVar19 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) , (binary_expression "(uint)param_3[3] <= (uint)param_3[2]" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n            puVar16[0x10] = bVar14;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar19 = puVar16[0x10];\n            }\n          }" { (expression_statement "puVar16[0x10] = bVar14;" (assignment_expression "puVar16[0x10] = bVar14" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x18)" * (cast_expression "(undefined4 *)(puVar16 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x18)" ( (binary_expression "puVar16 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c37e;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c37e" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar19 = puVar16[0x10];\n            }" if (parenthesized_expression "(iVar17 == -1)" ( (binary_expression "iVar17 == -1" identifier == number_literal) )) (compound_statement "{\n              param_3 = (int *)0x0;\n              cVar19 = puVar16[0x10];\n            }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "cVar19 = puVar16[0x10];" (assignment_expression "cVar19 = puVar16[0x10]" identifier = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;) })) })) (if_statement "if ((*(int *)(puVar16 + 8) == 0) || (puVar16[0x32] == '\0')) {\n            cVar20 = puVar16[0x32];\n          }\n          else {\n            cVar20 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }\n          }" if (parenthesized_expression "((*(int *)(puVar16 + 8) == 0) || (puVar16[0x32] == '\0'))" ( (binary_expression "(*(int *)(puVar16 + 8) == 0) || (puVar16[0x32] == '\0')" (parenthesized_expression "(*(int *)(puVar16 + 8) == 0)" ( (binary_expression "*(int *)(puVar16 + 8) == 0" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(puVar16[0x32] == '\0')" ( (binary_expression "puVar16[0x32] == '\0'" (subscript_expression "puVar16[0x32]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            cVar20 = puVar16[0x32];\n          }" { (expression_statement "cVar20 = puVar16[0x32];" (assignment_expression "cVar20 = puVar16[0x32]" identifier = (subscript_expression "puVar16[0x32]" identifier [ number_literal ])) ;) }) (else_clause "else {\n            cVar20 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }\n          }" else (compound_statement "{\n            cVar20 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }\n          }" { (expression_statement "cVar20 = '\0';" (assignment_expression "cVar20 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }" if (parenthesized_expression "(*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))" ( (binary_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)" (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc)" * (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 8) + 0xc)" ( (binary_expression "*(int *)(puVar16 + 8) + 0xc" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + number_literal) )))) <= (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 8)" * (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 8) + 8)" ( (binary_expression "*(int *)(puVar16 + 8) + 8" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n              iVar17 = **(int **)(puVar16 + 8);\n              *(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar20 = iVar17 == -1;\n            }" { (expression_statement "iVar17 = **(int **)(puVar16 + 8);" (assignment_expression "iVar17 = **(int **)(puVar16 + 8)" identifier = (pointer_expression "**(int **)(puVar16 + 8)" * (pointer_expression "*(int **)(puVar16 + 8)" * (cast_expression "(int **)(puVar16 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8);" (assignment_expression "*(int **)(puVar16 + -0x10) = *(int **)(puVar16 + 8)" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(int **)(puVar16 + 8)" * (cast_expression "(int **)(puVar16 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c34f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c34f" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar20 = iVar17 == -1;" (assignment_expression "cVar20 = iVar17 == -1" identifier = (binary_expression "iVar17 == -1" identifier == number_literal)) ;) })) }))) (if_statement "if (cVar20 == cVar19) {\n            **(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2;\n          }" if (parenthesized_expression "(cVar20 == cVar19)" ( (binary_expression "cVar20 == cVar19" identifier == identifier) )) (compound_statement "{\n            **(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2;\n          }" { (expression_statement "**(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2;" (assignment_expression "**(uint **)(puVar16 + 0x9c) = **(uint **)(puVar16 + 0x9c) | 2" (pointer_expression "**(uint **)(puVar16 + 0x9c)" * (pointer_expression "*(uint **)(puVar16 + 0x9c)" * (cast_expression "(uint **)(puVar16 + 0x9c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) = (binary_expression "**(uint **)(puVar16 + 0x9c) | 2" (pointer_expression "**(uint **)(puVar16 + 0x9c)" * (pointer_expression "*(uint **)(puVar16 + 0x9c)" * (cast_expression "(uint **)(puVar16 + 0x9c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) | number_literal)) ;) })) }) (else_clause "else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n          puVar16 = puVar16 + -4;\n        }" else (compound_statement "{\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n          puVar16 = puVar16 + -4;\n        }" { (expression_statement "*(int **)(puVar16 + 0x88) = param_3;" (assignment_expression "*(int **)(puVar16 + 0x88) = param_3" (pointer_expression "*(int **)(puVar16 + 0x88)" * (cast_expression "(int **)(puVar16 + 0x88)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x88)" ( (binary_expression "puVar16 + 0x88" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);" (assignment_expression "*(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc)" (pointer_expression "*(undefined4 *)(puVar16 + 0x8c)" * (cast_expression "(undefined4 *)(puVar16 + 0x8c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x8c)" ( (binary_expression "puVar16 + 0x8c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);" (assignment_expression "*(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34)" (pointer_expression "*(undefined4 *)(puVar16 + 0x94)" * (cast_expression "(undefined4 *)(puVar16 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x94)" ( (binary_expression "puVar16 + 0x94" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x34)" * (cast_expression "(undefined4 *)(puVar16 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);" (assignment_expression "*(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8)" (pointer_expression "*(undefined4 *)(puVar16 + 0x90)" * (cast_expression "(undefined4 *)(puVar16 + 0x90)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x90)" ( (binary_expression "puVar16 + 0x90" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" * (cast_expression "(undefined4 *)(puVar16 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0xc) = iVar17;" (assignment_expression "*(int *)(puVar16 + -0xc) = iVar17" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0xa0)" * (cast_expression "(undefined4 *)(puVar16 + 0xa0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xa0)" ( (binary_expression "puVar16 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x9c)" * (cast_expression "(undefined4 *)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x98)" * (cast_expression "(undefined4 *)(puVar16 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x98)" ( (binary_expression "puVar16 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" * (cast_expression "(undefined4 *)(puVar16 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x94)" * (cast_expression "(undefined4 *)(puVar16 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x94)" ( (binary_expression "puVar16 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" * (cast_expression "(undefined4 *)(puVar16 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x90)" * (cast_expression "(undefined4 *)(puVar16 + 0x90)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x90)" ( (binary_expression "puVar16 + 0x90" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x8c)" * (cast_expression "(undefined4 *)(puVar16 + 0x8c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x8c)" ( (binary_expression "puVar16 + 0x8c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88)" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" * (cast_expression "(undefined4 *)(puVar16 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x88)" * (cast_expression "(undefined4 *)(puVar16 + 0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x88)" ( (binary_expression "puVar16 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x2c)" * (cast_expression "(undefined4 *)(puVar16 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x2c)" ( (binary_expression "puVar16 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x84)" * (cast_expression "(undefined4 *)(puVar16 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;" (assignment_expression "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48" (pointer_expression "*(undefined1 **)(puVar16 + -0x30)" * (cast_expression "(undefined1 **)(puVar16 + -0x30)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x30)" ( (binary_expression "puVar16 + -0x30" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x48" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x34) = 0x27c28f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = 0x27c28f" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);" (assignment_expression "*(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44)" (pointer_expression "*(undefined4 *)(puVar16 + 0x84)" * (cast_expression "(undefined4 *)(puVar16 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x44)" * (cast_expression "(undefined4 *)(puVar16 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "param_3 = *(int **)(puVar16 + 0x84);" (assignment_expression "param_3 = *(int **)(puVar16 + 0x84)" identifier = (pointer_expression "*(int **)(puVar16 + 0x84)" * (cast_expression "(int **)(puVar16 + 0x84)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "*(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48)" (pointer_expression "*(undefined4 *)(puVar16 + 0x88)" * (cast_expression "(undefined4 *)(puVar16 + 0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x88)" ( (binary_expression "puVar16 + 0x88" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" * (cast_expression "(undefined4 *)(puVar16 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x48)" ( (binary_expression "puVar16 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);" (assignment_expression "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88)" (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x88)" * (cast_expression "(undefined4 *)(puVar16 + 0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x88)" ( (binary_expression "puVar16 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "puVar16 = puVar16 + -4;" (assignment_expression "puVar16 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) }))) (expression_statement "param_10 = (ctype *)(*(int *)(puVar16 + 0x28) + 1);" (assignment_expression "param_10 = (ctype *)(*(int *)(puVar16 + 0x28) + 1)" identifier = (cast_expression "(ctype *)(*(int *)(puVar16 + 0x28) + 1)" ( (type_descriptor "ctype *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x28) + 1)" ( (binary_expression "*(int *)(puVar16 + 0x28) + 1" (pointer_expression "*(int *)(puVar16 + 0x28)" * (cast_expression "(int *)(puVar16 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) + number_literal) )))) ;) (if_statement "if (*(ctype **)(puVar16 + 0xa8) == param_10) break;" if (parenthesized_expression "(*(ctype **)(puVar16 + 0xa8) == param_10)" ( (binary_expression "*(ctype **)(puVar16 + 0xa8) == param_10" (pointer_expression "*(ctype **)(puVar16 + 0xa8)" * (cast_expression "(ctype **)(puVar16 + 0xa8)" ( (type_descriptor "ctype **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == identifier) )) (break_statement "break;" break ;)) }))) }) while (parenthesized_expression "(**(int **)(puVar16 + 0x9c) == 0)" ( (binary_expression "**(int **)(puVar16 + 0x9c) == 0" (pointer_expression "**(int **)(puVar16 + 0x9c)" * (pointer_expression "*(int **)(puVar16 + 0x9c)" * (cast_expression "(int **)(puVar16 + 0x9c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) == number_literal) )) ;) })) (expression_statement "piVar3 = *(int **)(puVar16 + 0x80);" (assignment_expression "piVar3 = *(int **)(puVar16 + 0x80)" identifier = (pointer_expression "*(int **)(puVar16 + 0x80)" * (cast_expression "(int **)(puVar16 + 0x80)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x80)" ( (binary_expression "puVar16 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = *(int *)(puVar16 + 0xc);" (assignment_expression "iVar17 = *(int *)(puVar16 + 0xc)" identifier = (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*piVar3 = (int)param_3;" (assignment_expression "*piVar3 = (int)param_3" (pointer_expression "*piVar3" * identifier) = (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[1] = iVar17;" (assignment_expression "piVar3[1] = iVar17" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) (labeled_statement "LAB_0027c2c0:\n  puVar16[0x28] = cVar19;" statement_identifier : (expression_statement "puVar16[0x28] = cVar19;" (assignment_expression "puVar16[0x28] = cVar19" (subscript_expression "puVar16[0x28]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "puVar16[0xc] = bVar13;" (assignment_expression "puVar16[0xc] = bVar13" (subscript_expression "puVar16[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3 = *(int **)(puVar16 + 8);" (assignment_expression "piVar3 = *(int **)(puVar16 + 8)" identifier = (pointer_expression "*(int **)(puVar16 + 8)" * (cast_expression "(int **)(puVar16 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = *piVar3;" (assignment_expression "iVar17 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar3;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c2d5" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar20 = puVar16[0xc];" (assignment_expression "cVar20 = puVar16[0xc]" identifier = (subscript_expression "puVar16[0xc]" identifier [ number_literal ])) ;) (expression_statement "piVar4 = (int *)0x0;" (assignment_expression "piVar4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar17 != -1) {\n    cVar20 = '\0';\n    piVar4 = piVar3;\n  }" if (parenthesized_expression "(iVar17 != -1)" ( (binary_expression "iVar17 != -1" identifier != number_literal) )) (compound_statement "{\n    cVar20 = '\0';\n    piVar4 = piVar3;\n  }" { (expression_statement "cVar20 = '\0';" (assignment_expression "cVar20 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "piVar4 = piVar3;" (assignment_expression "piVar4 = piVar3" identifier = identifier) ;) })) (expression_statement "cVar19 = puVar16[0x28];" (assignment_expression "cVar19 = puVar16[0x28]" identifier = (subscript_expression "puVar16[0x28]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(puVar16 + 8) = piVar4;" (assignment_expression "*(int **)(puVar16 + 8) = piVar4" (pointer_expression "*(int **)(puVar16 + 8)" * (cast_expression "(int **)(puVar16 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0027bfb6;" goto statement_identifier ;) (ERROR "}" }))
(translation_unit "void FUN_0027bb80(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n                 undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n                 byte *param_10,byte *param_11)\n\n{\n  undefined4 *puVar1;\n  code *pcVar2;\n  int *piVar3;\n  undefined1 *puVar4;\n  byte bVar5;\n  undefined1 uVar6;\n  byte bVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  undefined1 uVar12;\n  bool bVar13;\n  bool bVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  int iVar17;\n  byte *pbVar18;\n  uint uVar19;\n  char cVar20;\n  char cVar21;\n  int aiStackY_b0 [9];\n  undefined1 auStack_7c [4];\n  int local_78 [2];\n  uint local_70;\n  uint local_6c;\n  undefined **local_68;\n  int local_64 [4];\n  byte local_54 [4];\n  undefined4 local_50;\n  bool local_4a [2];\n  int local_48;\n  undefined **local_44;\n  int local_40 [2];\n  undefined **local_38;\n  int local_34 [5];\n  undefined1 local_20 [16];\n  \n  local_68 = &__DT_PLTGOT;\n  local_70 = param_4;\n  local_78[1] = param_5;\n  local_48 = param_6;\n  local_40[1] = param_7 + 0x6c;\n  piVar8 = (int *)FUN_00212050(local_40[1]);\n  *param_8 = 0;\n  puVar16 = auStack_7c;\n  if (param_10 != param_11) {\n    local_4a[0] = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }\n  piVar8 = *(int **)(puVar16 + 0x80);\n  iVar17 = *(int *)(puVar16 + 0xc);\n  *piVar8 = (int)param_3;\n  piVar8[1] = iVar17;\n  return;\nLAB_0027c2c0:\n  puVar16[0x28] = cVar20;\n  puVar16[0xc] = bVar7;\n  piVar8 = *(int **)(puVar16 + 8);\n  iVar17 = *piVar8;\n  *(int **)(puVar16 + -0x10) = piVar8;\n  pcVar2 = *(code **)(iVar17 + 0x24);\n  *(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;\n  iVar17 = (*pcVar2)();\n  cVar21 = puVar16[0xc];\n  piVar9 = (int *)0x0;\n  if (iVar17 != -1) {\n    cVar21 = '\0';\n    piVar9 = piVar8;\n  }\n  cVar20 = puVar16[0x28];\n  *(int **)(puVar16 + 8) = piVar9;\n  goto LAB_0027bfb6;\n}\n\n" (function_definition "void FUN_0027bb80(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n                 undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n                 byte *param_10,byte *param_11)\n\n{\n  undefined4 *puVar1;\n  code *pcVar2;\n  int *piVar3;\n  undefined1 *puVar4;\n  byte bVar5;\n  undefined1 uVar6;\n  byte bVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  undefined1 uVar12;\n  bool bVar13;\n  bool bVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  int iVar17;\n  byte *pbVar18;\n  uint uVar19;\n  char cVar20;\n  char cVar21;\n  int aiStackY_b0 [9];\n  undefined1 auStack_7c [4];\n  int local_78 [2];\n  uint local_70;\n  uint local_6c;\n  undefined **local_68;\n  int local_64 [4];\n  byte local_54 [4];\n  undefined4 local_50;\n  bool local_4a [2];\n  int local_48;\n  undefined **local_44;\n  int local_40 [2];\n  undefined **local_38;\n  int local_34 [5];\n  undefined1 local_20 [16];\n  \n  local_68 = &__DT_PLTGOT;\n  local_70 = param_4;\n  local_78[1] = param_5;\n  local_48 = param_6;\n  local_40[1] = param_7 + 0x6c;\n  piVar8 = (int *)FUN_00212050(local_40[1]);\n  *param_8 = 0;\n  puVar16 = auStack_7c;\n  if (param_10 != param_11) {\n    local_4a[0] = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }\n  piVar8 = *(int **)(puVar16 + 0x80);\n  iVar17 = *(int *)(puVar16 + 0xc);\n  *piVar8 = (int)param_3;\n  piVar8[1] = iVar17;\n  return;\nLAB_0027c2c0:\n  puVar16[0x28] = cVar20;\n  puVar16[0xc] = bVar7;\n  piVar8 = *(int **)(puVar16 + 8);\n  iVar17 = *piVar8;\n  *(int **)(puVar16 + -0x10) = piVar8;\n  pcVar2 = *(code **)(iVar17 + 0x24);\n  *(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;\n  iVar17 = (*pcVar2)();\n  cVar21 = puVar16[0xc];\n  piVar9 = (int *)0x0;\n  if (iVar17 != -1) {\n    cVar21 = '\0';\n    piVar9 = piVar8;\n  }\n  cVar20 = puVar16[0x28];\n  *(int **)(puVar16 + 8) = piVar9;\n  goto LAB_0027bfb6;\n}" primitive_type (function_declarator "FUN_0027bb80(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n                 undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n                 byte *param_10,byte *param_11)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n                 undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n                 byte *param_10,byte *param_11)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "undefined4 *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "byte *param_10" type_identifier (pointer_declarator "*param_10" * identifier)) , (parameter_declaration "byte *param_11" type_identifier (pointer_declarator "*param_11" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  code *pcVar2;\n  int *piVar3;\n  undefined1 *puVar4;\n  byte bVar5;\n  undefined1 uVar6;\n  byte bVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  undefined1 uVar12;\n  bool bVar13;\n  bool bVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  int iVar17;\n  byte *pbVar18;\n  uint uVar19;\n  char cVar20;\n  char cVar21;\n  int aiStackY_b0 [9];\n  undefined1 auStack_7c [4];\n  int local_78 [2];\n  uint local_70;\n  uint local_6c;\n  undefined **local_68;\n  int local_64 [4];\n  byte local_54 [4];\n  undefined4 local_50;\n  bool local_4a [2];\n  int local_48;\n  undefined **local_44;\n  int local_40 [2];\n  undefined **local_38;\n  int local_34 [5];\n  undefined1 local_20 [16];\n  \n  local_68 = &__DT_PLTGOT;\n  local_70 = param_4;\n  local_78[1] = param_5;\n  local_48 = param_6;\n  local_40[1] = param_7 + 0x6c;\n  piVar8 = (int *)FUN_00212050(local_40[1]);\n  *param_8 = 0;\n  puVar16 = auStack_7c;\n  if (param_10 != param_11) {\n    local_4a[0] = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }\n  piVar8 = *(int **)(puVar16 + 0x80);\n  iVar17 = *(int *)(puVar16 + 0xc);\n  *piVar8 = (int)param_3;\n  piVar8[1] = iVar17;\n  return;\nLAB_0027c2c0:\n  puVar16[0x28] = cVar20;\n  puVar16[0xc] = bVar7;\n  piVar8 = *(int **)(puVar16 + 8);\n  iVar17 = *piVar8;\n  *(int **)(puVar16 + -0x10) = piVar8;\n  pcVar2 = *(code **)(iVar17 + 0x24);\n  *(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;\n  iVar17 = (*pcVar2)();\n  cVar21 = puVar16[0xc];\n  piVar9 = (int *)0x0;\n  if (iVar17 != -1) {\n    cVar21 = '\0';\n    piVar9 = piVar8;\n  }\n  cVar20 = puVar16[0x28];\n  *(int **)(puVar16 + 8) = piVar9;\n  goto LAB_0027bfb6;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "undefined1 uVar6;" type_identifier identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined1 uVar12;" type_identifier identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "char cVar20;" primitive_type identifier ;) (declaration "char cVar21;" primitive_type identifier ;) (declaration "int aiStackY_b0 [9];" primitive_type (array_declarator "aiStackY_b0 [9]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_7c [4];" type_identifier (array_declarator "auStack_7c [4]" identifier [ number_literal ]) ;) (declaration "int local_78 [2];" primitive_type (array_declarator "local_78 [2]" identifier [ number_literal ]) ;) (declaration "uint local_70;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "undefined **local_68;" type_identifier (pointer_declarator "**local_68" * (pointer_declarator "*local_68" * identifier)) ;) (declaration "int local_64 [4];" primitive_type (array_declarator "local_64 [4]" identifier [ number_literal ]) ;) (declaration "byte local_54 [4];" type_identifier (array_declarator "local_54 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "bool local_4a [2];" primitive_type (array_declarator "local_4a [2]" identifier [ number_literal ]) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "undefined **local_44;" type_identifier (pointer_declarator "**local_44" * (pointer_declarator "*local_44" * identifier)) ;) (declaration "int local_40 [2];" primitive_type (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (declaration "undefined **local_38;" type_identifier (pointer_declarator "**local_38" * (pointer_declarator "*local_38" * identifier)) ;) (declaration "int local_34 [5];" primitive_type (array_declarator "local_34 [5]" identifier [ number_literal ]) ;) (declaration "undefined1 local_20 [16];" type_identifier (array_declarator "local_20 [16]" identifier [ number_literal ]) ;) (expression_statement "local_68 = &__DT_PLTGOT;" (assignment_expression "local_68 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "local_70 = param_4;" (assignment_expression "local_70 = param_4" identifier = identifier) ;) (expression_statement "local_78[1] = param_5;" (assignment_expression "local_78[1] = param_5" (subscript_expression "local_78[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_48 = param_6;" (assignment_expression "local_48 = param_6" identifier = identifier) ;) (expression_statement "local_40[1] = param_7 + 0x6c;" (assignment_expression "local_40[1] = param_7 + 0x6c" (subscript_expression "local_40[1]" identifier [ number_literal ]) = (binary_expression "param_7 + 0x6c" identifier + number_literal)) ;) (expression_statement "piVar8 = (int *)FUN_00212050(local_40[1]);" (assignment_expression "piVar8 = (int *)FUN_00212050(local_40[1])" identifier = (cast_expression "(int *)FUN_00212050(local_40[1])" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00212050(local_40[1])" identifier (argument_list "(local_40[1])" ( (subscript_expression "local_40[1]" identifier [ number_literal ]) ))))) ;) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) (expression_statement "puVar16 = auStack_7c;" (assignment_expression "puVar16 = auStack_7c" identifier = identifier) ;) (if_statement "if (param_10 != param_11) {\n    local_4a[0] = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }" if (parenthesized_expression "(param_10 != param_11)" ( (binary_expression "param_10 != param_11" identifier != identifier) )) (compound_statement "{\n    local_4a[0] = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }" { (expression_statement "local_4a[0] = local_48 == -1;" (assignment_expression "local_4a[0] = local_48 == -1" (subscript_expression "local_4a[0]" identifier [ number_literal ]) = (binary_expression "local_48 == -1" identifier == number_literal)) ;) (expression_statement "local_44 = local_68 + -0x4b990;" (assignment_expression "local_44 = local_68 + -0x4b990" identifier = (binary_expression "local_68 + -0x4b990" identifier + number_literal)) ;) (expression_statement "local_38 = local_68 + -0xbcb5c;" (assignment_expression "local_38 = local_68 + -0xbcb5c" identifier = (binary_expression "local_68 + -0xbcb5c" identifier + number_literal)) ;) (expression_statement "puVar16 = auStack_7c;" (assignment_expression "puVar16 = auStack_7c" identifier = identifier) ;) (do_statement "do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);" do (compound_statement "{\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    }" { (expression_statement "cVar20 = *(int *)(puVar16 + 0xc) == -1;" (assignment_expression "cVar20 = *(int *)(puVar16 + 0xc) == -1" identifier = (binary_expression "*(int *)(puVar16 + 0xc) == -1" (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) == number_literal)) ;) (expression_statement "bVar13 = param_3 != (int *)0x0 && (bool)cVar20;" (assignment_expression "bVar13 = param_3 != (int *)0x0 && (bool)cVar20" identifier = (binary_expression "param_3 != (int *)0x0 && (bool)cVar20" (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (cast_expression "(bool)cVar20" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "puVar16[0x10] = bVar13;" (assignment_expression "puVar16[0x10] = bVar13" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }" { (if_statement "if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }" if (parenthesized_expression "((uint)param_3[2] < (uint)param_3[3])" ( (binary_expression "(uint)param_3[2] < (uint)param_3[3]" (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          puVar16[0x10] = 0;\n        }" { (expression_statement "puVar16[0x10] = 0;" (assignment_expression "puVar16[0x10] = 0" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }" else (compound_statement "{\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }" { (expression_statement "puVar16[0x28] = cVar20;" (assignment_expression "puVar16[0x28] = cVar20" (subscript_expression "puVar16[0x28]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c42e;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c42e" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "uVar12 = puVar16[0x10];" (assignment_expression "uVar12 = puVar16[0x10]" identifier = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;) (expression_statement "cVar20 = puVar16[0x28];" (assignment_expression "cVar20 = puVar16[0x28]" identifier = (subscript_expression "puVar16[0x28]" identifier [ number_literal ])) ;) (if_statement "if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }" if (parenthesized_expression "(iVar17 == -1)" ( (binary_expression "iVar17 == -1" identifier == number_literal) )) (compound_statement "{\n            param_3 = (int *)0x0;\n          }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n            uVar12 = 0;\n          }" else (compound_statement "{\n            uVar12 = 0;\n          }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) }))) (expression_statement "puVar16[0x10] = uVar12;" (assignment_expression "puVar16[0x10] = uVar12" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) }))) }) (else_clause "else {\n        puVar16[0x10] = cVar20;\n      }" else (compound_statement "{\n        puVar16[0x10] = cVar20;\n      }" { (expression_statement "puVar16[0x10] = cVar20;" (assignment_expression "puVar16[0x10] = cVar20" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }" if (parenthesized_expression "((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0)" ( (binary_expression "(*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0" (parenthesized_expression "(*(int *)(puVar16 + 8) != 0 & puVar16[0x32])" ( (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) != number_literal) & (subscript_expression "puVar16[0x32]" identifier [ number_literal ])) )) == number_literal) )) (compound_statement "{\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }" { (expression_statement "cVar21 = puVar16[0x32];" (assignment_expression "cVar21 = puVar16[0x32]" identifier = (subscript_expression "puVar16[0x32]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }" statement_identifier : (if_statement "if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }" if (parenthesized_expression "(cVar21 == puVar16[0x10])" ( (binary_expression "cVar21 == puVar16[0x10]" identifier == (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) )) (compound_statement "{\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }" { (labeled_statement "LAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;" statement_identifier : (expression_statement "**(undefined4 **)(puVar16 + 0x9c) = 6;" (assignment_expression "**(undefined4 **)(puVar16 + 0x9c) = 6" (pointer_expression "**(undefined4 **)(puVar16 + 0x9c)" * (pointer_expression "*(undefined4 **)(puVar16 + 0x9c)" * (cast_expression "(undefined4 **)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) = number_literal) ;)) (break_statement "break;" break ;) }))) }) (else_clause "else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }" else (compound_statement "{\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }" { (if_statement "if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }" if (parenthesized_expression "(*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))" ( (binary_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)" (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc)" * (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 8) + 0xc)" ( (binary_expression "*(int *)(puVar16 + 8) + 0xc" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + number_literal) )))) <= (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 8)" * (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 8) + 8)" ( (binary_expression "*(int *)(puVar16 + 8) + 8" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }" { (expression_statement "puVar16[0x2c] = cVar20;" (assignment_expression "puVar16[0x2c] = cVar20" (subscript_expression "puVar16[0x2c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" (assignment_expression "puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (subscript_expression "puVar16[0x28]" identifier [ number_literal ]) = (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) != number_literal) & (subscript_expression "puVar16[0x32]" identifier [ number_literal ]))) ;) (expression_statement "piVar9 = *(int **)(puVar16 + 8);" (assignment_expression "piVar9 = *(int **)(puVar16 + 8)" identifier = (pointer_expression "*(int **)(puVar16 + 8)" * (cast_expression "(int **)(puVar16 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = *piVar9;" (assignment_expression "iVar17 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar9;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar9" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c46c;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c46c" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar21 = puVar16[0x28];" (assignment_expression "cVar21 = puVar16[0x28]" identifier = (subscript_expression "puVar16[0x28]" identifier [ number_literal ])) ;) (expression_statement "piVar3 = (int *)0x0;" (assignment_expression "piVar3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }" if (parenthesized_expression "(iVar17 != -1)" ( (binary_expression "iVar17 != -1" identifier != number_literal) )) (compound_statement "{\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }" { (expression_statement "cVar21 = '\0';" (assignment_expression "cVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "piVar3 = piVar9;" (assignment_expression "piVar3 = piVar9" identifier = identifier) ;) })) (expression_statement "cVar20 = puVar16[0x2c];" (assignment_expression "cVar20 = puVar16[0x2c]" identifier = (subscript_expression "puVar16[0x2c]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(puVar16 + 8) = piVar3;" (assignment_expression "*(int **)(puVar16 + 8) = piVar3" (pointer_expression "*(int **)(puVar16 + 8)" * (cast_expression "(int **)(puVar16 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0027bd1f;" goto statement_identifier ;) })) (if_statement "if (puVar16[0x10] == '\0') goto LAB_0027c0a4;" if (parenthesized_expression "(puVar16[0x10] == '\0')" ( (binary_expression "puVar16[0x10] == '\0'" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0027c0a4;" goto statement_identifier ;)) }))) (expression_statement "bVar7 = *param_10;" (assignment_expression "bVar7 = *param_10" identifier = (pointer_expression "*param_10" * identifier)) ;) (expression_statement "bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);" (assignment_expression "bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d)" identifier = (pointer_expression "*(byte *)((int)piVar8 + bVar7 + 0x11d)" * (cast_expression "(byte *)((int)piVar8 + bVar7 + 0x11d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + bVar7 + 0x11d)" ( (binary_expression "(int)piVar8 + bVar7 + 0x11d" (binary_expression "(int)piVar8 + bVar7" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar16 + 0x10) = (uint)bVar7;" (assignment_expression "*(uint *)(puVar16 + 0x10) = (uint)bVar7" (pointer_expression "*(uint *)(puVar16 + 0x10)" * (cast_expression "(uint *)(puVar16 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }" { (expression_statement "pcVar2 = *(code **)(*piVar8 + 0x20);" (assignment_expression "pcVar2 = *(code **)(*piVar8 + 0x20)" identifier = (pointer_expression "*(code **)(*piVar8 + 0x20)" * (cast_expression "(code **)(*piVar8 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar8 + 0x20)" ( (binary_expression "*piVar8 + 0x20" (pointer_expression "*piVar8" * identifier) + number_literal) ))))) ;) (expression_statement "bVar5 = bVar7;" (assignment_expression "bVar5 = bVar7" identifier = identifier) ;) (if_statement "if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }" if (parenthesized_expression "(pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c))" ( (binary_expression "pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" identifier != (pointer_expression "*(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" * (cast_expression "(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + 0x14) + -0x24c)" ( (binary_expression "*(int *)(puVar16 + 0x14) + -0x24c" (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }" { (expression_statement "puVar16[0x28] = cVar20;" (assignment_expression "puVar16[0x28] = cVar20" (subscript_expression "puVar16[0x28]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)bVar7;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)bVar7" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)(char)bVar7" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c190;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c190" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar5 = (*pcVar2)();" (assignment_expression "bVar5 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar20 = puVar16[0x28];" (assignment_expression "cVar20 = puVar16[0x28]" identifier = (subscript_expression "puVar16[0x28]" identifier [ number_literal ])) ;) })) (if_statement "if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }" if (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }" { (expression_statement "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;" (assignment_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5" (pointer_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d)" * (cast_expression "(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d)" ( (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d" (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x10)" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0027bd69;" goto statement_identifier ;) })) (labeled_statement "LAB_0027bc28:\n        iVar17 = piVar8[6];" statement_identifier : (expression_statement "iVar17 = piVar8[6];" (assignment_expression "iVar17 = piVar8[6]" identifier = (subscript_expression "piVar8[6]" identifier [ number_literal ])) ;)) (if_statement "if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }" if (parenthesized_expression "((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0)" ( (binary_expression "(*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20)" ( (binary_expression "*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20" (pointer_expression "*(byte *)(iVar17 + 1 + (uint)*param_10 * 2)" * (cast_expression "(byte *)(iVar17 + 1 + (uint)*param_10 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 1 + (uint)*param_10 * 2)" ( (binary_expression "iVar17 + 1 + (uint)*param_10 * 2" (binary_expression "iVar17 + 1" identifier + number_literal) + (binary_expression "(uint)*param_10 * 2" (binary_expression "(uint)*param_10" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }" { (expression_statement "pbVar18 = param_10 + 1;" (assignment_expression "pbVar18 = param_10 + 1" identifier = (binary_expression "param_10 + 1" identifier + number_literal)) ;) (if_statement "if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }" if (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == pbVar18)" ( (binary_expression "*(byte **)(puVar16 + 0xa8) == pbVar18" (pointer_expression "*(byte **)(puVar16 + 0xa8)" * (cast_expression "(byte **)(puVar16 + 0xa8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }" { (expression_statement "pbVar18 = *(byte **)(puVar16 + 0xa8);" (assignment_expression "pbVar18 = *(byte **)(puVar16 + 0xa8)" identifier = (pointer_expression "*(byte **)(puVar16 + 0xa8)" * (cast_expression "(byte **)(puVar16 + 0xa8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) ))))) ;) }) (else_clause "else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }" else (if_statement "if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }" if (parenthesized_expression "((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0)" ( (binary_expression "(*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20)" ( (binary_expression "*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20" (pointer_expression "*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2)" * (cast_expression "(byte *)(iVar17 + 1 + (uint)param_10[1] * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 1 + (uint)param_10[1] * 2)" ( (binary_expression "iVar17 + 1 + (uint)param_10[1] * 2" (binary_expression "iVar17 + 1" identifier + number_literal) + (binary_expression "(uint)param_10[1] * 2" (cast_expression "(uint)param_10[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_10[1]" identifier [ number_literal ])) * number_literal)) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }" { (do_statement "do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);" do (compound_statement "{\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            }" { (expression_statement "pbVar18 = pbVar18 + 1;" (assignment_expression "pbVar18 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) (if_statement "if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;" if (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == pbVar18)" ( (binary_expression "*(byte **)(puVar16 + 0xa8) == pbVar18" (pointer_expression "*(byte **)(puVar16 + 0xa8)" * (cast_expression "(byte **)(puVar16 + 0xa8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == identifier) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0)" ( (binary_expression "(*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20)" ( (binary_expression "*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20" (pointer_expression "*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2)" * (cast_expression "(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 1 + (uint)*pbVar18 * 2)" ( (binary_expression "iVar17 + 1 + (uint)*pbVar18 * 2" (binary_expression "iVar17 + 1" identifier + number_literal) + (binary_expression "(uint)*pbVar18 * 2" (binary_expression "(uint)*pbVar18" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) != number_literal) )) ;) })))) (expression_statement "*(byte **)(puVar16 + 0xa4) = pbVar18;" (assignment_expression "*(byte **)(puVar16 + 0xa4) = pbVar18" (pointer_expression "*(byte **)(puVar16 + 0xa4)" * (cast_expression "(byte **)(puVar16 + 0xa4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa4)" ( (binary_expression "puVar16 + 0xa4" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar19 = *(uint *)(puVar16 + 0xc);" (assignment_expression "uVar19 = *(uint *)(puVar16 + 0xc)" identifier = (pointer_expression "*(uint *)(puVar16 + 0xc)" * (cast_expression "(uint *)(puVar16 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(puVar16 + 0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + 0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + 0x10)" * (cast_expression "(int **)(puVar16 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "cVar20 = uVar19 == 0xffffffff;" (assignment_expression "cVar20 = uVar19 == 0xffffffff" identifier = (binary_expression "uVar19 == 0xffffffff" identifier == number_literal)) ;) (expression_statement "bVar14 = param_3 != (int *)0x0 && (bool)cVar20;" (assignment_expression "bVar14 = param_3 != (int *)0x0 && (bool)cVar20" identifier = (binary_expression "param_3 != (int *)0x0 && (bool)cVar20" (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (cast_expression "(bool)cVar20" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "bVar13 = (bool)cVar20;" (assignment_expression "bVar13 = (bool)cVar20" identifier = (cast_expression "(bool)cVar20" ( (type_descriptor "bool" primitive_type) ) identifier)) ;) (if_statement "if (bVar14) goto LAB_0027bfff;" if (parenthesized_expression "(bVar14)" ( identifier )) (goto_statement "goto LAB_0027bfff;" goto statement_identifier ;)) (labeled_statement "LAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" statement_identifier : (expression_statement "bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" (assignment_expression "bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32]" identifier = (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) != number_literal) & (subscript_expression "puVar16[0x32]" identifier [ number_literal ]))) ;)) (if_statement "if (bVar7 != 0) goto LAB_0027c01c;" if (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0027c01c;" goto statement_identifier ;)) (labeled_statement "LAB_0027bfb1:\n          cVar21 = puVar16[0x32];" statement_identifier : (expression_statement "cVar21 = puVar16[0x32];" (assignment_expression "cVar21 = puVar16[0x32]" identifier = (subscript_expression "puVar16[0x32]" identifier [ number_literal ])) ;)) (labeled_statement "LAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }" statement_identifier : (if_statement "if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }" if (parenthesized_expression "((bool)cVar21 != bVar13)" ( (binary_expression "(bool)cVar21 != bVar13" (cast_expression "(bool)cVar21" ( (type_descriptor "bool" primitive_type) ) identifier) != identifier) )) (compound_statement "{\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }" { (do_statement "do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );" do (compound_statement "{\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            }" { (expression_statement "uVar10 = uVar19;" (assignment_expression "uVar10 = uVar19" identifier = identifier) ;) (if_statement "if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }" if (parenthesized_expression "((param_3 == (int *)0x0) || (cVar20 == '\0'))" ( (binary_expression "(param_3 == (int *)0x0) || (cVar20 == '\0')" (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(cVar20 == '\0')" ( (binary_expression "cVar20 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }" { (labeled_statement "LAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;" statement_identifier : (if_statement "if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;" if (parenthesized_expression "((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0)" ( (binary_expression "(*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0" (parenthesized_expression "(*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20)" ( (binary_expression "*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20" (pointer_expression "*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)" * (cast_expression "(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)" ( (binary_expression "*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2" (binary_expression "*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1" (pointer_expression "*(int *)(*(int *)(puVar16 + 0x10) + 0x18)" * (cast_expression "(int *)(*(int *)(puVar16 + 0x10) + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x10) + 0x18)" ( (binary_expression "*(int *)(puVar16 + 0x10) + 0x18" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) + number_literal) )))) + number_literal) + (binary_expression "(uVar10 & 0xff) * 2" (parenthesized_expression "(uVar10 & 0xff)" ( (binary_expression "uVar10 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;))) (expression_statement "pbVar18 = (byte *)param_3[2];" (assignment_expression "pbVar18 = (byte *)param_3[2]" identifier = (cast_expression "(byte *)param_3[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;" if (parenthesized_expression "(pbVar18 < (byte *)param_3[3])" ( (binary_expression "pbVar18 < (byte *)param_3[3]" identifier < (cast_expression "(byte *)param_3[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0027bfe5;" goto statement_identifier ;)) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x28)" identifier = (pointer_expression "*(code **)(iVar17 + 0x28)" * (cast_expression "(code **)(iVar17 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x28)" ( (binary_expression "iVar17 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c0e9" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }" else (compound_statement "{\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }" { (expression_statement "pbVar18 = (byte *)param_3[2];" (assignment_expression "pbVar18 = (byte *)param_3[2]" identifier = (cast_expression "(byte *)param_3[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) (if_statement "if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }" if (parenthesized_expression "((byte *)param_3[3] <= pbVar18)" ( (binary_expression "(byte *)param_3[3] <= pbVar18" (cast_expression "(byte *)param_3[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }" { (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c3ae" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar10 = (*pcVar2)();" (assignment_expression "uVar10 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }" if (parenthesized_expression "(uVar10 == 0xffffffff)" ( (binary_expression "uVar10 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                    param_3 = (int *)0x0;\n                  }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_0027bfc8;" goto statement_identifier ;) })) (expression_statement "piVar8 = *(int **)(puVar16 + 0x10);" (assignment_expression "piVar8 = *(int **)(puVar16 + 0x10)" identifier = (pointer_expression "*(int **)(puVar16 + 0x10)" * (cast_expression "(int **)(puVar16 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }" if (parenthesized_expression "((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0)" ( (binary_expression "(*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20)" ( (binary_expression "*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20" (pointer_expression "*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2)" * (cast_expression "(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8[6] + 1 + (uint)*pbVar18 * 2)" ( (binary_expression "piVar8[6] + 1 + (uint)*pbVar18 * 2" (binary_expression "piVar8[6] + 1" (subscript_expression "piVar8[6]" identifier [ number_literal ]) + number_literal) + (binary_expression "(uint)*pbVar18 * 2" (binary_expression "(uint)*pbVar18" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }" { (expression_statement "param_10 = *(byte **)(puVar16 + 0xa4);" (assignment_expression "param_10 = *(byte **)(puVar16 + 0xa4)" identifier = (pointer_expression "*(byte **)(puVar16 + 0xa4)" * (cast_expression "(byte **)(puVar16 + 0xa4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa4)" ( (binary_expression "puVar16 + 0xa4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0027bccc;" goto statement_identifier ;) })) (labeled_statement "LAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);" statement_identifier : (expression_statement "param_3[2] = (int)(pbVar18 + 1);" (assignment_expression "param_3[2] = (int)(pbVar18 + 1)" (subscript_expression "param_3[2]" identifier [ number_literal ]) = (cast_expression "(int)(pbVar18 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar18 + 1)" ( (binary_expression "pbVar18 + 1" identifier + number_literal) )))) ;)) }))) (expression_statement "uVar19 = 0xffffffff;" (assignment_expression "uVar19 = 0xffffffff" identifier = number_literal) ;) (expression_statement "cVar20 = true;" (assignment_expression "cVar20 = true" identifier = true) ;) (expression_statement "bVar14 = param_3 != (int *)0x0;" (assignment_expression "bVar14 = param_3 != (int *)0x0" identifier = (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "bVar13 = (bool)cVar20;" (assignment_expression "bVar13 = (bool)cVar20" identifier = (cast_expression "(bool)cVar20" ( (type_descriptor "bool" primitive_type) ) identifier)) ;) (if_statement "if (!bVar14) goto LAB_0027bfa2;" if (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) (goto_statement "goto LAB_0027bfa2;" goto statement_identifier ;)) (labeled_statement "LAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }" statement_identifier : (if_statement "if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }" if (parenthesized_expression "((uint)param_3[3] <= (uint)param_3[2])" ( (binary_expression "(uint)param_3[3] <= (uint)param_3[2]" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) )) (compound_statement "{\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }" { (expression_statement "puVar16[0xc] = cVar20;" (assignment_expression "puVar16[0xc] = cVar20" (subscript_expression "puVar16[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c30d;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c30d" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (if_statement "if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }" if (parenthesized_expression "(iVar17 == -1)" ( (binary_expression "iVar17 == -1" identifier == number_literal) )) (compound_statement "{\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar13 = bVar14;" (assignment_expression "bVar13 = bVar14" identifier = identifier) ;) })) (expression_statement "cVar20 = puVar16[0xc];" (assignment_expression "cVar20 = puVar16[0xc]" identifier = (subscript_expression "puVar16[0xc]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0027bfa2;" goto statement_identifier ;) }))) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" (assignment_expression "bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32]" identifier = (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) != number_literal) & (subscript_expression "puVar16[0x32]" identifier [ number_literal ]))) ;) (if_statement "if (bVar7 == 0) goto LAB_0027bfb1;" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0027bfb1;" goto statement_identifier ;)) (labeled_statement "LAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;" statement_identifier : (if_statement "if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;" if (parenthesized_expression "(*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))" ( (binary_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)" (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc)" * (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 8) + 0xc)" ( (binary_expression "*(int *)(puVar16 + 8) + 0xc" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + number_literal) )))) <= (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 8)" * (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 8) + 8)" ( (binary_expression "*(int *)(puVar16 + 8) + 8" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (goto_statement "goto LAB_0027c2c0;" goto statement_identifier ;))) (if_statement "if (bVar13 == false) break;" if (parenthesized_expression "(bVar13 == false)" ( (binary_expression "bVar13 == false" identifier == false) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "*(uint *)(puVar16 + 0xc) = uVar19;" (assignment_expression "*(uint *)(puVar16 + 0xc) = uVar19" (pointer_expression "*(uint *)(puVar16 + 0xc)" * (cast_expression "(uint *)(puVar16 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8 = *(int **)(puVar16 + 0x10);" (assignment_expression "piVar8 = *(int **)(puVar16 + 0x10)" identifier = (pointer_expression "*(int **)(puVar16 + 0x10)" * (cast_expression "(int **)(puVar16 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "param_10 = *(byte **)(puVar16 + 0xa4);" (assignment_expression "param_10 = *(byte **)(puVar16 + 0xa4)" identifier = (pointer_expression "*(byte **)(puVar16 + 0xa4)" * (cast_expression "(byte **)(puVar16 + 0xa4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa4)" ( (binary_expression "puVar16 + 0xa4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0027bccc;" goto statement_identifier ;) })) (if_statement "if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" if (parenthesized_expression "((param_3 == (int *)0x0) || (cVar20 == '\0'))" ( (binary_expression "(param_3 == (int *)0x0) || (cVar20 == '\0')" (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(cVar20 == '\0')" ( (binary_expression "cVar20 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n          cVar21 = puVar16[0xc];\n        }" { (expression_statement "cVar21 = puVar16[0xc];" (assignment_expression "cVar21 = puVar16[0xc]" identifier = (subscript_expression "puVar16[0xc]" identifier [ number_literal ])) ;) }) (else_clause "else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" else (if_statement "if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" if (parenthesized_expression "((char *)param_3[2] < (char *)param_3[3])" ( (binary_expression "(char *)param_3[2] < (char *)param_3[3]" (cast_expression "(char *)param_3[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_3[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          cVar21 = *(char *)param_3[2];\n        }" { (expression_statement "cVar21 = *(char *)param_3[2];" (assignment_expression "cVar21 = *(char *)param_3[2]" identifier = (pointer_expression "*(char *)param_3[2]" * (cast_expression "(char *)param_3[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" else (compound_statement "{\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" { (expression_statement "puVar16[0x10] = cVar20;" (assignment_expression "puVar16[0x10] = cVar20" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c4df;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c4df" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar11 = (*pcVar2)();" (assignment_expression "iVar11 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar20 = puVar16[0x10];" (assignment_expression "cVar20 = puVar16[0x10]" identifier = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;) (expression_statement "iVar17 = -1;" (assignment_expression "iVar17 = -1" identifier = number_literal) ;) (if_statement "if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }" if (parenthesized_expression "(iVar11 != -1)" ( (binary_expression "iVar11 != -1" identifier != number_literal) )) (compound_statement "{\n            iVar17 = iVar11;\n          }" { (expression_statement "iVar17 = iVar11;" (assignment_expression "iVar17 = iVar11" identifier = identifier) ;) })) (expression_statement "cVar21 = (char)iVar17;" (assignment_expression "cVar21 = (char)iVar17" identifier = (cast_expression "(char)iVar17" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }" if (parenthesized_expression "(iVar11 == -1)" ( (binary_expression "iVar11 == -1" identifier == number_literal) )) (compound_statement "{\n            param_3 = (int *)0x0;\n          }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }))))) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "puVar16[0x10] = cVar20;" (assignment_expression "puVar16[0x10] = cVar20" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)cVar21;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)cVar21" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x10);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x10)" identifier = (pointer_expression "*(code **)(iVar17 + 0x10)" * (cast_expression "(code **)(iVar17 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x10)" ( (binary_expression "iVar17 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bc5c" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar20 = (*pcVar2)();" (assignment_expression "cVar20 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)*param_10;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)*param_10" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)(char)*param_10" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_10" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_10" * identifier)))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x10);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x10)" identifier = (pointer_expression "*(code **)(iVar17 + 0x10)" * (cast_expression "(code **)(iVar17 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x10)" ( (binary_expression "iVar17 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bc6b" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar21 = (*pcVar2)();" (assignment_expression "cVar21 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }" if (parenthesized_expression "(cVar21 != cVar20)" ( (binary_expression "cVar21 != cVar20" identifier != identifier) )) (compound_statement "{\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }" { (if_statement "if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" if (parenthesized_expression "((param_3 == (int *)0x0) || (puVar16[0x10] == '\0'))" ( (binary_expression "(param_3 == (int *)0x0) || (puVar16[0x10] == '\0')" (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar16[0x10] == '\0')" ( (binary_expression "puVar16[0x10] == '\0'" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            cVar20 = puVar16[0xc];\n          }" { (expression_statement "cVar20 = puVar16[0xc];" (assignment_expression "cVar20 = puVar16[0xc]" identifier = (subscript_expression "puVar16[0xc]" identifier [ number_literal ])) ;) }) (else_clause "else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" else (if_statement "if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" if (parenthesized_expression "((char *)param_3[2] < (char *)param_3[3])" ( (binary_expression "(char *)param_3[2] < (char *)param_3[3]" (cast_expression "(char *)param_3[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_3[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n            cVar20 = *(char *)param_3[2];\n          }" { (expression_statement "cVar20 = *(char *)param_3[2];" (assignment_expression "cVar20 = *(char *)param_3[2]" identifier = (pointer_expression "*(char *)param_3[2]" * (cast_expression "(char *)param_3[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" else (compound_statement "{\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" { (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c50a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c50a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar11 = (*pcVar2)();" (assignment_expression "iVar11 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar17 = -1;" (assignment_expression "iVar17 = -1" identifier = number_literal) ;) (if_statement "if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }" if (parenthesized_expression "(iVar11 != -1)" ( (binary_expression "iVar11 != -1" identifier != number_literal) )) (compound_statement "{\n              iVar17 = iVar11;\n            }" { (expression_statement "iVar17 = iVar11;" (assignment_expression "iVar17 = iVar11" identifier = identifier) ;) })) (expression_statement "cVar20 = (char)iVar17;" (assignment_expression "cVar20 = (char)iVar17" identifier = (cast_expression "(char)iVar17" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }" if (parenthesized_expression "(iVar11 == -1)" ( (binary_expression "iVar11 == -1" identifier == number_literal) )) (compound_statement "{\n              param_3 = (int *)0x0;\n            }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }))))) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)cVar20;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)cVar20" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 8);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 8)" identifier = (pointer_expression "*(code **)(iVar17 + 8)" * (cast_expression "(code **)(iVar17 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bc95;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bc95" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar20 = (*pcVar2)();" (assignment_expression "cVar20 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)*param_10;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)*param_10" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)(char)*param_10" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*param_10" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*param_10" * identifier)))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 8);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 8)" identifier = (pointer_expression "*(code **)(iVar17 + 8)" * (cast_expression "(code **)(iVar17 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bca4;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bca4" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "cVar21 = (*pcVar2)();" (assignment_expression "cVar21 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }" if (parenthesized_expression "(cVar21 != cVar20)" ( (binary_expression "cVar21 != cVar20" identifier != identifier) )) (compound_statement "{\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }" { (labeled_statement "LAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;" statement_identifier : (expression_statement "**(undefined4 **)(puVar16 + 0x9c) = 4;" (assignment_expression "**(undefined4 **)(puVar16 + 0x9c) = 4" (pointer_expression "**(undefined4 **)(puVar16 + 0x9c)" * (pointer_expression "*(undefined4 **)(puVar16 + 0x9c)" * (cast_expression "(undefined4 **)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) = number_literal) ;)) (break_statement "break;" break ;) })) })) (if_statement "if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }" if (parenthesized_expression "((uint)param_3[2] < (uint)param_3[3])" ( (binary_expression "(uint)param_3[2] < (uint)param_3[3]" (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          param_3[2] = param_3[2] + 1;\n        }" { (expression_statement "param_3[2] = param_3[2] + 1;" (assignment_expression "param_3[2] = param_3[2] + 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = (binary_expression "param_3[2] + 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }" else (compound_statement "{\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }" { (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x28)" identifier = (pointer_expression "*(code **)(iVar17 + 0x28)" * (cast_expression "(code **)(iVar17 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x28)" ( (binary_expression "iVar17 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c419;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c419" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) }))) (expression_statement "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_10 = param_10 + 1;" (assignment_expression "param_10 = param_10 + 1" identifier = (binary_expression "param_10 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_0027bccc:\n        puVar4 = puVar16;" statement_identifier : (expression_statement "puVar4 = puVar16;" (assignment_expression "puVar4 = puVar16" identifier = identifier) ;)) (if_statement "if (*(byte **)(puVar16 + 0xa8) == param_10) break;" if (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == param_10)" ( (binary_expression "*(byte **)(puVar16 + 0xa8) == param_10" (pointer_expression "*(byte **)(puVar16 + 0xa8)" * (cast_expression "(byte **)(puVar16 + 0xa8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == identifier) )) (break_statement "break;" break ;)) }) (else_clause "else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }" else (compound_statement "{\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }" { (labeled_statement "LAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;" statement_identifier : (if_statement "if (bVar5 != 0x25) goto LAB_0027bc28;" if (parenthesized_expression "(bVar5 != 0x25)" ( (binary_expression "bVar5 != 0x25" identifier != number_literal) )) (goto_statement "goto LAB_0027bc28;" goto statement_identifier ;))) (expression_statement "*(byte **)(puVar16 + 0x28) = param_10 + 1;" (assignment_expression "*(byte **)(puVar16 + 0x28) = param_10 + 1" (pointer_expression "*(byte **)(puVar16 + 0x28)" * (cast_expression "(byte **)(puVar16 + 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) = (binary_expression "param_10 + 1" identifier + number_literal)) ;) (if_statement "if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;" if (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == param_10 + 1)" ( (binary_expression "*(byte **)(puVar16 + 0xa8) == param_10 + 1" (pointer_expression "*(byte **)(puVar16 + 0xa8)" * (cast_expression "(byte **)(puVar16 + 0xa8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == (binary_expression "param_10 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_0027c4c0;" goto statement_identifier ;)) (expression_statement "bVar7 = param_10[1];" (assignment_expression "bVar7 = param_10[1]" identifier = (subscript_expression "param_10[1]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(puVar16 + 0x2c) = (uint)bVar7;" (assignment_expression "*(uint *)(puVar16 + 0x2c) = (uint)bVar7" (pointer_expression "*(uint *)(puVar16 + 0x2c)" * (cast_expression "(uint *)(puVar16 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);" (assignment_expression "cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d)" identifier = (pointer_expression "*(char *)((int)piVar8 + bVar7 + 0x11d)" * (cast_expression "(char *)((int)piVar8 + bVar7 + 0x11d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + bVar7 + 0x11d)" ( (binary_expression "(int)piVar8 + bVar7 + 0x11d" (binary_expression "(int)piVar8 + bVar7" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))))) ;) (expression_statement "puVar16[0x10] = cVar20;" (assignment_expression "puVar16[0x10] = cVar20" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar12 = 0x25;" (assignment_expression "uVar12 = 0x25" identifier = number_literal) ;) (if_statement "if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }" if (parenthesized_expression "(cVar20 == '\0')" ( (binary_expression "cVar20 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }" { (expression_statement "pcVar2 = *(code **)(*piVar8 + 0x20);" (assignment_expression "pcVar2 = *(code **)(*piVar8 + 0x20)" identifier = (pointer_expression "*(code **)(*piVar8 + 0x20)" * (cast_expression "(code **)(*piVar8 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar8 + 0x20)" ( (binary_expression "*piVar8 + 0x20" (pointer_expression "*piVar8" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }" if (parenthesized_expression "(pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c))" ( (binary_expression "pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" identifier != (pointer_expression "*(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" * (cast_expression "(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + 0x14) + -0x24c)" ( (binary_expression "*(int *)(puVar16 + 0x14) + -0x24c" (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }" { (expression_statement "puVar16[0x10] = 0x25;" (assignment_expression "puVar16[0x10] = 0x25" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)bVar7;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)bVar7" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (cast_expression "(int)(char)bVar7" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c3f8" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar7 = (*pcVar2)();" (assignment_expression "bVar7 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "uVar12 = puVar16[0x10];" (assignment_expression "uVar12 = puVar16[0x10]" identifier = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;) })) (if_statement "if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }" if (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )) (compound_statement "{\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }" { (expression_statement "puVar16[0x10] = bVar7;" (assignment_expression "puVar16[0x10] = bVar7" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;" (assignment_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7" (pointer_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" * (cast_expression "(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" ( (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d" (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x2c)" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(puVar16 + 0x2c)" * (cast_expression "(int *)(puVar16 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) ))))) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0027bdcc;" goto statement_identifier ;) })) (expression_statement "puVar16[0x10] = 0;" (assignment_expression "puVar16[0x10] = 0" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x3c) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x3c) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" * (cast_expression "(undefined4 *)(puVar16 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar7 = 0;" (assignment_expression "bVar7 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }" else (compound_statement "{\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }" { (labeled_statement "LAB_0027bdcc:\n          bVar7 = puVar16[0x10];" statement_identifier : (expression_statement "bVar7 = puVar16[0x10];" (assignment_expression "bVar7 = puVar16[0x10]" identifier = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;)) (if_statement "if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }" if (parenthesized_expression "((bVar7 == 0x45) || (bVar7 == 0x4f))" ( (binary_expression "(bVar7 == 0x45) || (bVar7 == 0x4f)" (parenthesized_expression "(bVar7 == 0x45)" ( (binary_expression "bVar7 == 0x45" identifier == number_literal) )) || (parenthesized_expression "(bVar7 == 0x4f)" ( (binary_expression "bVar7 == 0x4f" identifier == number_literal) ))) )) (compound_statement "{\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }" { (expression_statement "*(byte **)(puVar16 + 0x28) = param_10 + 2;" (assignment_expression "*(byte **)(puVar16 + 0x28) = param_10 + 2" (pointer_expression "*(byte **)(puVar16 + 0x28)" * (cast_expression "(byte **)(puVar16 + 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x28)" ( (binary_expression "puVar16 + 0x28" identifier + number_literal) )))) = (binary_expression "param_10 + 2" identifier + number_literal)) ;) (if_statement "if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;" if (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == param_10 + 2)" ( (binary_expression "*(byte **)(puVar16 + 0xa8) == param_10 + 2" (pointer_expression "*(byte **)(puVar16 + 0xa8)" * (cast_expression "(byte **)(puVar16 + 0xa8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xa8)" ( (binary_expression "puVar16 + 0xa8" identifier + number_literal) )))) == (binary_expression "param_10 + 2" identifier + number_literal)) )) (goto_statement "goto LAB_0027c4c0;" goto statement_identifier ;)) (expression_statement "bVar5 = param_10[2];" (assignment_expression "bVar5 = param_10[2]" identifier = (subscript_expression "param_10[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(puVar16 + 0x2c) = (uint)bVar5;" (assignment_expression "*(uint *)(puVar16 + 0x2c) = (uint)bVar5" (pointer_expression "*(uint *)(puVar16 + 0x2c)" * (cast_expression "(uint *)(puVar16 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) )))) = (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);" (assignment_expression "bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d)" identifier = (pointer_expression "*(byte *)((int)piVar8 + bVar5 + 0x11d)" * (cast_expression "(byte *)((int)piVar8 + bVar5 + 0x11d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + bVar5 + 0x11d)" ( (binary_expression "(int)piVar8 + bVar5 + 0x11d" (binary_expression "(int)piVar8 + bVar5" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];" (assignment_expression "*(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10]" (pointer_expression "*(int *)(puVar16 + 0x3c)" * (cast_expression "(int *)(puVar16 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) )))) = (cast_expression "(int)(char)puVar16[0x10]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)puVar16[0x10]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar16[0x10]" identifier [ number_literal ])))) ;) (if_statement "if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }" { (expression_statement "iVar17 = (int)(char)bVar5;" (assignment_expression "iVar17 = (int)(char)bVar5" identifier = (cast_expression "(int)(char)bVar5" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar5" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "pcVar2 = *(code **)(*piVar8 + 0x20);" (assignment_expression "pcVar2 = *(code **)(*piVar8 + 0x20)" identifier = (pointer_expression "*(code **)(*piVar8 + 0x20)" * (cast_expression "(code **)(*piVar8 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar8 + 0x20)" ( (binary_expression "*piVar8 + 0x20" (pointer_expression "*piVar8" * identifier) + number_literal) ))))) ;) (expression_statement "bVar7 = bVar5;" (assignment_expression "bVar7 = bVar5" identifier = identifier) ;) (if_statement "if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }" if (parenthesized_expression "(pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c))" ( (binary_expression "pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" identifier != (pointer_expression "*(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" * (cast_expression "(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + 0x14) + -0x24c)" ( (binary_expression "*(int *)(puVar16 + 0x14) + -0x24c" (pointer_expression "*(int *)(puVar16 + 0x14)" * (cast_expression "(int *)(puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }" { (expression_statement "puVar16[0x33] = uVar12;" (assignment_expression "puVar16[0x33] = uVar12" (subscript_expression "puVar16[0x33]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar16 + -0xc) = iVar17;" (assignment_expression "*(int *)(puVar16 + -0xc) = iVar17" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c4a2" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar7 = (*pcVar2)();" (assignment_expression "bVar7 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "uVar12 = puVar16[0x33];" (assignment_expression "uVar12 = puVar16[0x33]" identifier = (subscript_expression "puVar16[0x33]" identifier [ number_literal ])) ;) (expression_statement "iVar17 = (int)(char)bVar7;" (assignment_expression "iVar17 = (int)(char)bVar7" identifier = (cast_expression "(int)(char)bVar7" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier))) ;) })) (if_statement "if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }" if (parenthesized_expression "(bVar7 != 0)" ( (binary_expression "bVar7 != 0" identifier != number_literal) )) (compound_statement "{\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }" { (expression_statement "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;" (assignment_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7" (pointer_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" * (cast_expression "(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" ( (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d" (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x2c)" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(puVar16 + 0x2c)" * (cast_expression "(int *)(puVar16 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x2c)" ( (binary_expression "puVar16 + 0x2c" identifier + number_literal) ))))) + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\n              iVar17 = (int)(char)bVar7;\n            }" else (compound_statement "{\n              iVar17 = (int)(char)bVar7;\n            }" { (expression_statement "iVar17 = (int)(char)bVar7;" (assignment_expression "iVar17 = (int)(char)bVar7" identifier = (cast_expression "(int)(char)bVar7" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier))) ;) }))) }) (else_clause "else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }" else (compound_statement "{\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }" { (expression_statement "*(undefined4 *)(puVar16 + 0x3c) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x3c) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" * (cast_expression "(undefined4 *)(puVar16 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (int)(char)bVar7;" (assignment_expression "iVar17 = (int)(char)bVar7" identifier = (cast_expression "(int)(char)bVar7" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar7" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "puVar16[0x10] = 0;" (assignment_expression "puVar16[0x10] = 0" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) = number_literal) ;) }))) }))) (expression_statement "puVar16[0x33] = uVar12;" (assignment_expression "puVar16[0x33] = uVar12" (subscript_expression "puVar16[0x33]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16[0x2c] = bVar7;" (assignment_expression "puVar16[0x2c] = bVar7" (subscript_expression "puVar16[0x2c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);" (assignment_expression "pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20)" identifier = (pointer_expression "*(code **)(**(int **)(puVar16 + 0x84) + 0x20)" * (cast_expression "(code **)(**(int **)(puVar16 + 0x84) + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(puVar16 + 0x84) + 0x20)" ( (binary_expression "**(int **)(puVar16 + 0x84) + 0x20" (pointer_expression "**(int **)(puVar16 + 0x84)" * (pointer_expression "*(int **)(puVar16 + 0x84)" * (cast_expression "(int **)(puVar16 + 0x84)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }" if (parenthesized_expression "(pcVar2 == *(code **)(puVar16 + 0x38))" ( (binary_expression "pcVar2 == *(code **)(puVar16 + 0x38)" identifier == (pointer_expression "*(code **)(puVar16 + 0x38)" * (cast_expression "(code **)(puVar16 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x38)" ( (binary_expression "puVar16 + 0x38" identifier + number_literal) ))))) )) (compound_statement "{\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }" { (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x40)" * (cast_expression "(undefined4 *)(puVar16 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x40)" ( (binary_expression "puVar16 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27be21;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27be21" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar9 = (int *)FUN_00212050();" (assignment_expression "piVar9 = (int *)FUN_00212050()" identifier = (cast_expression "(int *)FUN_00212050()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00212050()" identifier (argument_list "()" ( ))))) ;) (expression_statement "uVar12 = puVar16[0x2c];" (assignment_expression "uVar12 = puVar16[0x2c]" identifier = (subscript_expression "puVar16[0x2c]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar16[0x33];" (assignment_expression "uVar6 = puVar16[0x33]" identifier = (subscript_expression "puVar16[0x33]" identifier [ number_literal ])) ;) (expression_statement "**(undefined4 **)(puVar16 + 0x9c) = 0;" (assignment_expression "**(undefined4 **)(puVar16 + 0x9c) = 0" (pointer_expression "**(undefined4 **)(puVar16 + 0x9c)" * (pointer_expression "*(undefined4 **)(puVar16 + 0x9c)" * (cast_expression "(undefined4 **)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) = number_literal) ;) (if_statement "if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }" if (parenthesized_expression "((char)piVar9[7] == '\0')" ( (binary_expression "(char)piVar9[7] == '\0'" (cast_expression "(char)piVar9[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar9[7]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }" { (expression_statement "puVar16[0x33] = uVar6;" (assignment_expression "puVar16[0x33] = uVar6" (subscript_expression "puVar16[0x33]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16[0x2c] = uVar12;" (assignment_expression "puVar16[0x2c] = uVar12" (subscript_expression "puVar16[0x2c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar9;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar9" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c1b5" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00242f30();" (call_expression "FUN_00242f30()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar12 = puVar16[0x2c];" (assignment_expression "uVar12 = puVar16[0x2c]" identifier = (subscript_expression "puVar16[0x2c]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar16[0x33];" (assignment_expression "uVar6 = puVar16[0x33]" identifier = (subscript_expression "puVar16[0x33]" identifier [ number_literal ])) ;) (expression_statement "pcVar2 = *(code **)(*piVar9 + 0x18);" (assignment_expression "pcVar2 = *(code **)(*piVar9 + 0x18)" identifier = (pointer_expression "*(code **)(*piVar9 + 0x18)" * (cast_expression "(code **)(*piVar9 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar9 + 0x18)" ( (binary_expression "*piVar9 + 0x18" (pointer_expression "*piVar9" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }" if (parenthesized_expression "(pcVar2 != *(code **)(puVar16 + 0x44))" ( (binary_expression "pcVar2 != *(code **)(puVar16 + 0x44)" identifier != (pointer_expression "*(code **)(puVar16 + 0x44)" * (cast_expression "(code **)(puVar16 + 0x44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) )) (compound_statement "{\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }" { (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 0x25;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 0x25" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" * (cast_expression "(undefined4 *)(puVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar9;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar9" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c1da;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c1da" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar6 = (*pcVar2)();" (assignment_expression "uVar6 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "uVar12 = puVar16[0x2c];" (assignment_expression "uVar12 = puVar16[0x2c]" identifier = (subscript_expression "puVar16[0x2c]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }" else (compound_statement "{\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }" { (expression_statement "uVar6 = *(undefined1 *)((int)piVar9 + 0x42);" (assignment_expression "uVar6 = *(undefined1 *)((int)piVar9 + 0x42)" identifier = (pointer_expression "*(undefined1 *)((int)piVar9 + 0x42)" * (cast_expression "(undefined1 *)((int)piVar9 + 0x42)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 + 0x42)" ( (binary_expression "(int)piVar9 + 0x42" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (expression_statement "puVar16[0x5c] = uVar6;" (assignment_expression "puVar16[0x5c] = uVar6" (subscript_expression "puVar16[0x5c]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }" if (parenthesized_expression "(puVar16[0x10] == '\0')" ( (binary_expression "puVar16[0x10] == '\0'" (subscript_expression "puVar16[0x10]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }" { (expression_statement "puVar16[0x5d] = uVar12;" (assignment_expression "puVar16[0x5d] = uVar12" (subscript_expression "puVar16[0x5d]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16[0x5e] = 0;" (assignment_expression "puVar16[0x5e] = 0" (subscript_expression "puVar16[0x5e]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }" else (compound_statement "{\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }" { (expression_statement "puVar16[0x5e] = uVar12;" (assignment_expression "puVar16[0x5e] = uVar12" (subscript_expression "puVar16[0x5e]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar16[0x5f] = 0;" (assignment_expression "puVar16[0x5f] = 0" (subscript_expression "puVar16[0x5f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar16[0x5d] = puVar16[0x10];" (assignment_expression "puVar16[0x5d] = puVar16[0x10]" (subscript_expression "puVar16[0x5d]" identifier [ number_literal ]) = (subscript_expression "puVar16[0x10]" identifier [ number_literal ])) ;) }))) (expression_statement "*(int **)(puVar16 + 0x18) = param_3;" (assignment_expression "*(int **)(puVar16 + 0x18) = param_3" (pointer_expression "*(int **)(puVar16 + 0x18)" * (cast_expression "(int **)(puVar16 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x18)" ( (binary_expression "puVar16 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);" (assignment_expression "*(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc)" (pointer_expression "*(undefined4 *)(puVar16 + 0x1c)" * (cast_expression "(undefined4 *)(puVar16 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);" (assignment_expression "*(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8)" (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" * (cast_expression "(undefined4 *)(puVar16 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);" (assignment_expression "*(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34)" (pointer_expression "*(undefined4 *)(puVar16 + 0x24)" * (cast_expression "(undefined4 *)(puVar16 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x34)" * (cast_expression "(undefined4 *)(puVar16 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;" (assignment_expression "*(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c" (pointer_expression "*(undefined1 **)(puVar16 + -0xc)" * (cast_expression "(undefined1 **)(puVar16 + -0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x5c" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0xa0)" * (cast_expression "(undefined4 *)(puVar16 + 0xa0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xa0)" ( (binary_expression "puVar16 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x9c)" * (cast_expression "(undefined4 *)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x98)" * (cast_expression "(undefined4 *)(puVar16 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x98)" ( (binary_expression "puVar16 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" * (cast_expression "(undefined4 *)(puVar16 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x24)" * (cast_expression "(undefined4 *)(puVar16 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" * (cast_expression "(undefined4 *)(puVar16 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" * (cast_expression "(undefined4 *)(puVar16 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x20)" ( (binary_expression "puVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x1c)" * (cast_expression "(undefined4 *)(puVar16 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1c)" ( (binary_expression "puVar16 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18)" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" * (cast_expression "(undefined4 *)(puVar16 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x18)" * (cast_expression "(undefined4 *)(puVar16 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x18)" ( (binary_expression "puVar16 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x2c)" * (cast_expression "(undefined4 *)(puVar16 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x2c)" ( (binary_expression "puVar16 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x84)" * (cast_expression "(undefined4 *)(puVar16 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;" (assignment_expression "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48" (pointer_expression "*(undefined1 **)(puVar16 + -0x30)" * (cast_expression "(undefined1 **)(puVar16 + -0x30)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x30)" ( (binary_expression "puVar16 + -0x30" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x48" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x34) = 0x27bec1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = 0x27bec1" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0027a830();" (call_expression "FUN_0027a830()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar17 = *(int *)(puVar16 + 0x48);" (assignment_expression "iVar17 = *(int *)(puVar16 + 0x48)" identifier = (pointer_expression "*(int *)(puVar16 + 0x48)" * (cast_expression "(int *)(puVar16 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x48)" ( (binary_expression "puVar16 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "param_3 = *(int **)(puVar16 + 0x44);" (assignment_expression "param_3 = *(int **)(puVar16 + 0x44)" identifier = (pointer_expression "*(int **)(puVar16 + 0x44)" * (cast_expression "(int **)(puVar16 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + 0x18) = iVar17;" (assignment_expression "*(int *)(puVar16 + 0x18) = iVar17" (pointer_expression "*(int *)(puVar16 + 0x18)" * (cast_expression "(int *)(puVar16 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x18)" ( (binary_expression "puVar16 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar16 + 8) = iVar17;" (assignment_expression "*(int *)(puVar16 + 8) = iVar17" (pointer_expression "*(int *)(puVar16 + 8)" * (cast_expression "(int *)(puVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + 0x14) = param_3;" (assignment_expression "*(int **)(puVar16 + 0x14) = param_3" (pointer_expression "*(int **)(puVar16 + 0x14)" * (cast_expression "(int **)(puVar16 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "bVar13 = param_3 != (int *)0x0 && iVar17 == -1;" (assignment_expression "bVar13 = param_3 != (int *)0x0 && iVar17 == -1" identifier = (binary_expression "param_3 != (int *)0x0 && iVar17 == -1" (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "iVar17 == -1" identifier == number_literal))) ;) (expression_statement "cVar20 = iVar17 == -1;" (assignment_expression "cVar20 = iVar17 == -1" identifier = (binary_expression "iVar17 == -1" identifier == number_literal)) ;) (if_statement "if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }" if (parenthesized_expression "((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2]))" ( (binary_expression "(bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])" (parenthesized_expression "(bVar13)" ( identifier )) && (parenthesized_expression "(cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])" ( (comma_expression "cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2]" (assignment_expression "cVar20 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) , (binary_expression "(uint)param_3[3] <= (uint)param_3[2]" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }" { (expression_statement "puVar16[0xc] = bVar13;" (assignment_expression "puVar16[0xc] = bVar13" (subscript_expression "puVar16[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" * (cast_expression "(undefined4 *)(puVar16 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x14)" ( (binary_expression "puVar16 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = 0x27c37e;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = 0x27c37e" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }" if (parenthesized_expression "(iVar17 == -1)" ( (binary_expression "iVar17 == -1" identifier == number_literal) )) (compound_statement "{\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "cVar20 = puVar16[0xc];" (assignment_expression "cVar20 = puVar16[0xc]" identifier = (subscript_expression "puVar16[0xc]" identifier [ number_literal ])) ;) })) })) (if_statement "if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }" if (parenthesized_expression "((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0'))" ( (binary_expression "(*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')" (parenthesized_expression "(*(int *)(puVar16 + 4) == 0)" ( (binary_expression "*(int *)(puVar16 + 4) == 0" (pointer_expression "*(int *)(puVar16 + 4)" * (cast_expression "(int *)(puVar16 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 4)" ( (binary_expression "puVar16 + 4" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(puVar16[0x2e] == '\0')" ( (binary_expression "puVar16[0x2e] == '\0'" (subscript_expression "puVar16[0x2e]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            cVar21 = puVar16[0x2e];\n          }" { (expression_statement "cVar21 = puVar16[0x2e];" (assignment_expression "cVar21 = puVar16[0x2e]" identifier = (subscript_expression "puVar16[0x2e]" identifier [ number_literal ])) ;) }) (else_clause "else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }" else (compound_statement "{\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }" { (expression_statement "cVar21 = '\0';" (assignment_expression "cVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }" if (parenthesized_expression "(*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8))" ( (binary_expression "*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)" (pointer_expression "*(uint *)(*(int *)(puVar16 + 4) + 0xc)" * (cast_expression "(uint *)(*(int *)(puVar16 + 4) + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 4) + 0xc)" ( (binary_expression "*(int *)(puVar16 + 4) + 0xc" (pointer_expression "*(int *)(puVar16 + 4)" * (cast_expression "(int *)(puVar16 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 4)" ( (binary_expression "puVar16 + 4" identifier + number_literal) )))) + number_literal) )))) <= (pointer_expression "*(uint *)(*(int *)(puVar16 + 4) + 8)" * (cast_expression "(uint *)(*(int *)(puVar16 + 4) + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 4) + 8)" ( (binary_expression "*(int *)(puVar16 + 4) + 8" (pointer_expression "*(int *)(puVar16 + 4)" * (cast_expression "(int *)(puVar16 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 4)" ( (binary_expression "puVar16 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }" { (expression_statement "iVar17 = **(int **)(puVar16 + 4);" (assignment_expression "iVar17 = **(int **)(puVar16 + 4)" identifier = (pointer_expression "**(int **)(puVar16 + 4)" * (pointer_expression "*(int **)(puVar16 + 4)" * (cast_expression "(int **)(puVar16 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 4)" ( (binary_expression "puVar16 + 4" identifier + number_literal) )))))) ;) (expression_statement "*(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);" (assignment_expression "*(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4)" (pointer_expression "*(int **)(puVar16 + -0x14)" * (cast_expression "(int **)(puVar16 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(int **)(puVar16 + 4)" * (cast_expression "(int **)(puVar16 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 4)" ( (binary_expression "puVar16 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = 0x27c34f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = 0x27c34f" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar21 = iVar17 == -1;" (assignment_expression "cVar21 = iVar17 == -1" identifier = (binary_expression "iVar17 == -1" identifier == number_literal)) ;) })) }))) (if_statement "if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }" if (parenthesized_expression "(cVar21 == cVar20)" ( (binary_expression "cVar21 == cVar20" identifier == identifier) )) (compound_statement "{\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }" { (expression_statement "**(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;" (assignment_expression "**(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2" (pointer_expression "**(uint **)(puVar16 + 0x98)" * (pointer_expression "*(uint **)(puVar16 + 0x98)" * (cast_expression "(uint **)(puVar16 + 0x98)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x98)" ( (binary_expression "puVar16 + 0x98" identifier + number_literal) ))))) = (binary_expression "**(uint **)(puVar16 + 0x98) | 2" (pointer_expression "**(uint **)(puVar16 + 0x98)" * (pointer_expression "*(uint **)(puVar16 + 0x98)" * (cast_expression "(uint **)(puVar16 + 0x98)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x98)" ( (binary_expression "puVar16 + 0x98" identifier + number_literal) ))))) | number_literal)) ;) })) }) (else_clause "else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }" else (compound_statement "{\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }" { (expression_statement "*(int **)(puVar16 + 0x88) = param_3;" (assignment_expression "*(int **)(puVar16 + 0x88) = param_3" (pointer_expression "*(int **)(puVar16 + 0x88)" * (cast_expression "(int **)(puVar16 + 0x88)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x88)" ( (binary_expression "puVar16 + 0x88" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);" (assignment_expression "*(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc)" (pointer_expression "*(undefined4 *)(puVar16 + 0x8c)" * (cast_expression "(undefined4 *)(puVar16 + 0x8c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x8c)" ( (binary_expression "puVar16 + 0x8c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" * (cast_expression "(undefined4 *)(puVar16 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);" (assignment_expression "*(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34)" (pointer_expression "*(undefined4 *)(puVar16 + 0x94)" * (cast_expression "(undefined4 *)(puVar16 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x94)" ( (binary_expression "puVar16 + 0x94" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x34)" * (cast_expression "(undefined4 *)(puVar16 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x34)" ( (binary_expression "puVar16 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);" (assignment_expression "*(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8)" (pointer_expression "*(undefined4 *)(puVar16 + 0x90)" * (cast_expression "(undefined4 *)(puVar16 + 0x90)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x90)" ( (binary_expression "puVar16 + 0x90" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" * (cast_expression "(undefined4 *)(puVar16 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" * (cast_expression "(undefined4 *)(puVar16 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x3c)" ( (binary_expression "puVar16 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar16 + -0xc) = iVar17;" (assignment_expression "*(int *)(puVar16 + -0xc) = iVar17" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0xa0)" * (cast_expression "(undefined4 *)(puVar16 + 0xa0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xa0)" ( (binary_expression "puVar16 + 0xa0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x9c)" * (cast_expression "(undefined4 *)(puVar16 + 0x9c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x98)" * (cast_expression "(undefined4 *)(puVar16 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x98)" ( (binary_expression "puVar16 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" * (cast_expression "(undefined4 *)(puVar16 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x94)" * (cast_expression "(undefined4 *)(puVar16 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x94)" ( (binary_expression "puVar16 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" * (cast_expression "(undefined4 *)(puVar16 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x90)" * (cast_expression "(undefined4 *)(puVar16 + 0x90)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x90)" ( (binary_expression "puVar16 + 0x90" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x8c)" * (cast_expression "(undefined4 *)(puVar16 + 0x8c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x8c)" ( (binary_expression "puVar16 + 0x8c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88)" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" * (cast_expression "(undefined4 *)(puVar16 + -0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x28)" ( (binary_expression "puVar16 + -0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x88)" * (cast_expression "(undefined4 *)(puVar16 + 0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x88)" ( (binary_expression "puVar16 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x2c)" * (cast_expression "(undefined4 *)(puVar16 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x2c)" ( (binary_expression "puVar16 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x84)" * (cast_expression "(undefined4 *)(puVar16 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;" (assignment_expression "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48" (pointer_expression "*(undefined1 **)(puVar16 + -0x30)" * (cast_expression "(undefined1 **)(puVar16 + -0x30)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x30)" ( (binary_expression "puVar16 + -0x30" identifier + number_literal) )))) = (binary_expression "puVar16 + 0x48" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x34) = 0x27c28f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = 0x27c28f" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" * (cast_expression "(undefined4 *)(puVar16 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x34)" ( (binary_expression "puVar16 + -0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);" (assignment_expression "*(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44)" (pointer_expression "*(undefined4 *)(puVar16 + 0x84)" * (cast_expression "(undefined4 *)(puVar16 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x44)" * (cast_expression "(undefined4 *)(puVar16 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x44)" ( (binary_expression "puVar16 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "param_3 = *(int **)(puVar16 + 0x84);" (assignment_expression "param_3 = *(int **)(puVar16 + 0x84)" identifier = (pointer_expression "*(int **)(puVar16 + 0x84)" * (cast_expression "(int **)(puVar16 + 0x84)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x84)" ( (binary_expression "puVar16 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "*(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48)" (pointer_expression "*(undefined4 *)(puVar16 + 0x88)" * (cast_expression "(undefined4 *)(puVar16 + 0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x88)" ( (binary_expression "puVar16 + 0x88" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" * (cast_expression "(undefined4 *)(puVar16 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x48)" ( (binary_expression "puVar16 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);" (assignment_expression "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88)" (pointer_expression "*(undefined4 *)(puVar16 + 8)" * (cast_expression "(undefined4 *)(puVar16 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x88)" * (cast_expression "(undefined4 *)(puVar16 + 0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x88)" ( (binary_expression "puVar16 + 0x88" identifier + number_literal) ))))) ;) }))) (expression_statement "puVar15 = puVar16 + -4;" (assignment_expression "puVar15 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (expression_statement "param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);" (assignment_expression "param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1)" identifier = (cast_expression "(byte *)(*(int *)(puVar16 + 0x24) + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 1)" ( (binary_expression "*(int *)(puVar16 + 0x24) + 1" (pointer_expression "*(int *)(puVar16 + 0x24)" * (cast_expression "(int *)(puVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "puVar1 = (undefined4 *)(puVar16 + 0xa4);" (assignment_expression "puVar1 = (undefined4 *)(puVar16 + 0xa4)" identifier = (cast_expression "(undefined4 *)(puVar16 + 0xa4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xa4)" ( (binary_expression "puVar16 + 0xa4" identifier + number_literal) )))) ;) (expression_statement "puVar16 = puVar16 + -4;" (assignment_expression "puVar16 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (expression_statement "puVar4 = puVar15;" (assignment_expression "puVar4 = puVar15" identifier = identifier) ;) (if_statement "if ((byte *)*puVar1 == param_10) break;" if (parenthesized_expression "((byte *)*puVar1 == param_10)" ( (binary_expression "(byte *)*puVar1 == param_10" (cast_expression "(byte *)*puVar1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) == identifier) )) (break_statement "break;" break ;)) }))) (expression_statement "puVar16 = puVar4;" (assignment_expression "puVar16 = puVar4" identifier = identifier) ;) }) while (parenthesized_expression "(**(int **)(puVar16 + 0x9c) == 0)" ( (binary_expression "**(int **)(puVar16 + 0x9c) == 0" (pointer_expression "**(int **)(puVar16 + 0x9c)" * (pointer_expression "*(int **)(puVar16 + 0x9c)" * (cast_expression "(int **)(puVar16 + 0x9c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c)" ( (binary_expression "puVar16 + 0x9c" identifier + number_literal) ))))) == number_literal) )) ;) })) (expression_statement "piVar8 = *(int **)(puVar16 + 0x80);" (assignment_expression "piVar8 = *(int **)(puVar16 + 0x80)" identifier = (pointer_expression "*(int **)(puVar16 + 0x80)" * (cast_expression "(int **)(puVar16 + 0x80)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x80)" ( (binary_expression "puVar16 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = *(int *)(puVar16 + 0xc);" (assignment_expression "iVar17 = *(int *)(puVar16 + 0xc)" identifier = (pointer_expression "*(int *)(puVar16 + 0xc)" * (cast_expression "(int *)(puVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*piVar8 = (int)param_3;" (assignment_expression "*piVar8 = (int)param_3" (pointer_expression "*piVar8" * identifier) = (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar8[1] = iVar17;" (assignment_expression "piVar8[1] = iVar17" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) (labeled_statement "LAB_0027c2c0:\n  puVar16[0x28] = cVar20;" statement_identifier : (expression_statement "puVar16[0x28] = cVar20;" (assignment_expression "puVar16[0x28] = cVar20" (subscript_expression "puVar16[0x28]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "puVar16[0xc] = bVar7;" (assignment_expression "puVar16[0xc] = bVar7" (subscript_expression "puVar16[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar8 = *(int **)(puVar16 + 8);" (assignment_expression "piVar8 = *(int **)(puVar16 + 8)" identifier = (pointer_expression "*(int **)(puVar16 + 8)" * (cast_expression "(int **)(puVar16 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" identifier = (pointer_expression "*(code **)(iVar17 + 0x24)" * (cast_expression "(code **)(iVar17 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + 0x24)" ( (binary_expression "iVar17 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c2d5" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" identifier = (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar21 = puVar16[0xc];" (assignment_expression "cVar21 = puVar16[0xc]" identifier = (subscript_expression "puVar16[0xc]" identifier [ number_literal ])) ;) (expression_statement "piVar9 = (int *)0x0;" (assignment_expression "piVar9 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar17 != -1) {\n    cVar21 = '\0';\n    piVar9 = piVar8;\n  }" if (parenthesized_expression "(iVar17 != -1)" ( (binary_expression "iVar17 != -1" identifier != number_literal) )) (compound_statement "{\n    cVar21 = '\0';\n    piVar9 = piVar8;\n  }" { (expression_statement "cVar21 = '\0';" (assignment_expression "cVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "piVar9 = piVar8;" (assignment_expression "piVar9 = piVar8" identifier = identifier) ;) })) (expression_statement "cVar20 = puVar16[0x28];" (assignment_expression "cVar20 = puVar16[0x28]" identifier = (subscript_expression "puVar16[0x28]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(puVar16 + 8) = piVar9;" (assignment_expression "*(int **)(puVar16 + 8) = piVar9" (pointer_expression "*(int **)(puVar16 + 8)" * (cast_expression "(int **)(puVar16 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 8)" ( (binary_expression "puVar16 + 8" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0027bfb6;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) & (subscript_expression IDENT [ LIT ])) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = LIT) ;)) (break_statement break ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) & (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * LIT)) )))) & LIT) )) != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (break_statement break ;)) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) & LIT) )) != LIT) )) ;) })))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) & (subscript_expression IDENT [ LIT ]))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) )))) & LIT) )) == LIT) )) (break_statement break ;))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;)) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) & (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == BOOL) )) (break_statement break ;)) }) while (parenthesized_expression ( BOOL )) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) }))))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) }))))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = LIT) ;)) (break_statement break ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (break_statement break ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) = IDENT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (binary_expression IDENT == LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (char_literal ' escape_sequence ')) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) | LIT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == IDENT) )) (break_statement break ;)) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "void FUN_0027bb80(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n                 undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n                 byte *param_10,byte *param_11)\n\n{\n  undefined4 *puVar1;\n  code *pcVar2;\n  int *piVar3;\n  undefined1 *puVar4;\n  byte bVar5;\n  undefined1 uVar6;\n  byte bVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  undefined1 uVar12;\n  bool bVar13;\n  bool bVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  int iVar17;\n  byte *pbVar18;\n  uint uVar19;\n  char cVar20;\n  char cVar21;\n  int aiStackY_b0 [9];\n  undefined1 auStack_7c [4];\n  int local_78 [2];\n  uint local_70;\n  uint local_6c;\n  undefined **local_68;\n  int local_64 [4];\n  byte local_54 [4];\n  undefined4 local_50;\n  bool local_4a [2];\n  int local_48;\n  undefined **local_44;\n  int local_40 [2];\n  undefined **local_38;\n  int local_34 [5];\n  undefined1 local_20 [16];\n  \n  local_68 = &__DT_PLTGOT;\n  local_70 = param_4;\n  local_78[1] = param_5;\n  local_48 = param_6;\n  local_40[1] = param_7 + 0x6c;\n  piVar8 = (int *)FUN_00212050(local_40[1]);\n  *param_8 = 0;\n  puVar16 = auStack_7c;\n  if (param_10 != param_11) {\n    local_4a[0] = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }\n  piVar8 = *(int **)(puVar16 + 0x80);\n  iVar17 = *(int *)(puVar16 + 0xc);\n  *piVar8 = (int)param_3;\n  piVar8[1] = iVar17;\n  return;\nLAB_0027c2c0:\n  puVar16[0x28] = cVar20;\n  puVar16[0xc] = bVar7;\n  piVar8 = *(int **)(puVar16 + 8);\n  iVar17 = *piVar8;\n  *(int **)(puVar16 + -0x10) = piVar8;\n  pcVar2 = *(code **)(iVar17 + 0x24);\n  *(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;\n  iVar17 = (*pcVar2)();\n  cVar21 = puVar16[0xc];\n  piVar9 = (int *)0x0;\n  if (iVar17 != -1) {\n    cVar21 = '\0';\n    piVar9 = piVar8;\n  }\n  cVar20 = puVar16[0x28];\n  *(int **)(puVar16 + 8) = piVar9;\n  goto LAB_0027bfb6;\n}" (primitive_type "void") (function_declarator "FUN_0027bb80(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n                 undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n                 byte *param_10,byte *param_11)" (identifier "FUN_0027bb80") (parameter_list "(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,\n                 undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,\n                 byte *param_10,byte *param_11)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) (, ",") (parameter_declaration "undefined4 *param_8" (type_identifier "undefined4") (pointer_declarator "*param_8" (* "*") (identifier "param_8"))) (, ",") (parameter_declaration "undefined4 param_9" (type_identifier "undefined4") (identifier "param_9")) (, ",") (parameter_declaration "byte *param_10" (type_identifier "byte") (pointer_declarator "*param_10" (* "*") (identifier "param_10"))) (, ",") (parameter_declaration "byte *param_11" (type_identifier "byte") (pointer_declarator "*param_11" (* "*") (identifier "param_11"))) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  code *pcVar2;\n  int *piVar3;\n  undefined1 *puVar4;\n  byte bVar5;\n  undefined1 uVar6;\n  byte bVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  undefined1 uVar12;\n  bool bVar13;\n  bool bVar14;\n  undefined1 *puVar15;\n  undefined1 *puVar16;\n  int iVar17;\n  byte *pbVar18;\n  uint uVar19;\n  char cVar20;\n  char cVar21;\n  int aiStackY_b0 [9];\n  undefined1 auStack_7c [4];\n  int local_78 [2];\n  uint local_70;\n  uint local_6c;\n  undefined **local_68;\n  int local_64 [4];\n  byte local_54 [4];\n  undefined4 local_50;\n  bool local_4a [2];\n  int local_48;\n  undefined **local_44;\n  int local_40 [2];\n  undefined **local_38;\n  int local_34 [5];\n  undefined1 local_20 [16];\n  \n  local_68 = &__DT_PLTGOT;\n  local_70 = param_4;\n  local_78[1] = param_5;\n  local_48 = param_6;\n  local_40[1] = param_7 + 0x6c;\n  piVar8 = (int *)FUN_00212050(local_40[1]);\n  *param_8 = 0;\n  puVar16 = auStack_7c;\n  if (param_10 != param_11) {\n    local_4a[0] = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }\n  piVar8 = *(int **)(puVar16 + 0x80);\n  iVar17 = *(int *)(puVar16 + 0xc);\n  *piVar8 = (int)param_3;\n  piVar8[1] = iVar17;\n  return;\nLAB_0027c2c0:\n  puVar16[0x28] = cVar20;\n  puVar16[0xc] = bVar7;\n  piVar8 = *(int **)(puVar16 + 8);\n  iVar17 = *piVar8;\n  *(int **)(puVar16 + -0x10) = piVar8;\n  pcVar2 = *(code **)(iVar17 + 0x24);\n  *(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;\n  iVar17 = (*pcVar2)();\n  cVar21 = puVar16[0xc];\n  piVar9 = (int *)0x0;\n  if (iVar17 != -1) {\n    cVar21 = '\0';\n    piVar9 = piVar8;\n  }\n  cVar20 = puVar16[0x28];\n  *(int **)(puVar16 + 8) = piVar9;\n  goto LAB_0027bfb6;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "code *pcVar2;" (type_identifier "code") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "undefined1 *puVar4;" (type_identifier "undefined1") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "undefined1 uVar6;" (type_identifier "undefined1") (identifier "uVar6") (; ";")) (declaration "byte bVar7;" (type_identifier "byte") (identifier "bVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined1 uVar12;" (type_identifier "undefined1") (identifier "uVar12") (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "undefined1 *puVar15;" (type_identifier "undefined1") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "undefined1 *puVar16;" (type_identifier "undefined1") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "byte *pbVar18;" (type_identifier "byte") (pointer_declarator "*pbVar18" (* "*") (identifier "pbVar18")) (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "char cVar20;" (primitive_type "char") (identifier "cVar20") (; ";")) (declaration "char cVar21;" (primitive_type "char") (identifier "cVar21") (; ";")) (declaration "int aiStackY_b0 [9];" (primitive_type "int") (array_declarator "aiStackY_b0 [9]" (identifier "aiStackY_b0") ([ "[") (number_literal "9") (] "]")) (; ";")) (declaration "undefined1 auStack_7c [4];" (type_identifier "undefined1") (array_declarator "auStack_7c [4]" (identifier "auStack_7c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int local_78 [2];" (primitive_type "int") (array_declarator "local_78 [2]" (identifier "local_78") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "uint local_70;" (type_identifier "uint") (identifier "local_70") (; ";")) (declaration "uint local_6c;" (type_identifier "uint") (identifier "local_6c") (; ";")) (declaration "undefined **local_68;" (type_identifier "undefined") (pointer_declarator "**local_68" (* "*") (pointer_declarator "*local_68" (* "*") (identifier "local_68"))) (; ";")) (declaration "int local_64 [4];" (primitive_type "int") (array_declarator "local_64 [4]" (identifier "local_64") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "byte local_54 [4];" (type_identifier "byte") (array_declarator "local_54 [4]" (identifier "local_54") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 local_50;" (type_identifier "undefined4") (identifier "local_50") (; ";")) (declaration "bool local_4a [2];" (primitive_type "bool") (array_declarator "local_4a [2]" (identifier "local_4a") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "undefined **local_44;" (type_identifier "undefined") (pointer_declarator "**local_44" (* "*") (pointer_declarator "*local_44" (* "*") (identifier "local_44"))) (; ";")) (declaration "int local_40 [2];" (primitive_type "int") (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined **local_38;" (type_identifier "undefined") (pointer_declarator "**local_38" (* "*") (pointer_declarator "*local_38" (* "*") (identifier "local_38"))) (; ";")) (declaration "int local_34 [5];" (primitive_type "int") (array_declarator "local_34 [5]" (identifier "local_34") ([ "[") (number_literal "5") (] "]")) (; ";")) (declaration "undefined1 local_20 [16];" (type_identifier "undefined1") (array_declarator "local_20 [16]" (identifier "local_20") ([ "[") (number_literal "16") (] "]")) (; ";")) (expression_statement "local_68 = &__DT_PLTGOT;" (assignment_expression "local_68 = &__DT_PLTGOT" (identifier "local_68") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "local_70 = param_4;" (assignment_expression "local_70 = param_4" (identifier "local_70") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_78[1] = param_5;" (assignment_expression "local_78[1] = param_5" (subscript_expression "local_78[1]" (identifier "local_78") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_5")) (; ";")) (expression_statement "local_48 = param_6;" (assignment_expression "local_48 = param_6" (identifier "local_48") (= "=") (identifier "param_6")) (; ";")) (expression_statement "local_40[1] = param_7 + 0x6c;" (assignment_expression "local_40[1] = param_7 + 0x6c" (subscript_expression "local_40[1]" (identifier "local_40") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "param_7 + 0x6c" (identifier "param_7") (+ "+") (number_literal "0x6c"))) (; ";")) (expression_statement "piVar8 = (int *)FUN_00212050(local_40[1]);" (assignment_expression "piVar8 = (int *)FUN_00212050(local_40[1])" (identifier "piVar8") (= "=") (cast_expression "(int *)FUN_00212050(local_40[1])" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00212050(local_40[1])" (identifier "FUN_00212050") (argument_list "(local_40[1])" (( "(") (subscript_expression "local_40[1]" (identifier "local_40") ([ "[") (number_literal "1") (] "]")) () ")"))))) (; ";")) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar16 = auStack_7c;" (assignment_expression "puVar16 = auStack_7c" (identifier "puVar16") (= "=") (identifier "auStack_7c")) (; ";")) (if_statement "if (param_10 != param_11) {\n    local_4a[0] = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }" (if "if") (parenthesized_expression "(param_10 != param_11)" (( "(") (binary_expression "param_10 != param_11" (identifier "param_10") (!= "!=") (identifier "param_11")) () ")")) (compound_statement "{\n    local_4a[0] = local_48 == -1;\n    local_44 = local_68 + -0x4b990;\n    local_38 = local_68 + -0xbcb5c;\n    puVar16 = auStack_7c;\n    do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);\n  }" ({ "{") (expression_statement "local_4a[0] = local_48 == -1;" (assignment_expression "local_4a[0] = local_48 == -1" (subscript_expression "local_4a[0]" (identifier "local_4a") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_48 == -1" (identifier "local_48") (== "==") (number_literal "-1"))) (; ";")) (expression_statement "local_44 = local_68 + -0x4b990;" (assignment_expression "local_44 = local_68 + -0x4b990" (identifier "local_44") (= "=") (binary_expression "local_68 + -0x4b990" (identifier "local_68") (+ "+") (number_literal "-0x4b990"))) (; ";")) (expression_statement "local_38 = local_68 + -0xbcb5c;" (assignment_expression "local_38 = local_68 + -0xbcb5c" (identifier "local_38") (= "=") (binary_expression "local_68 + -0xbcb5c" (identifier "local_68") (+ "+") (number_literal "-0xbcb5c"))) (; ";")) (expression_statement "puVar16 = auStack_7c;" (assignment_expression "puVar16 = auStack_7c" (identifier "puVar16") (= "=") (identifier "auStack_7c")) (; ";")) (do_statement "do {\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    } while (**(int **)(puVar16 + 0x9c) == 0);" (do "do") (compound_statement "{\n      cVar20 = *(int *)(puVar16 + 0xc) == -1;\n      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;\n      puVar16[0x10] = bVar13;\n      if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }\n      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }\n      bVar7 = *param_10;\n      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);\n      *(uint *)(puVar16 + 0x10) = (uint)bVar7;\n      if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }\n      puVar16 = puVar4;\n    }" ({ "{") (expression_statement "cVar20 = *(int *)(puVar16 + 0xc) == -1;" (assignment_expression "cVar20 = *(int *)(puVar16 + 0xc) == -1" (identifier "cVar20") (= "=") (binary_expression "*(int *)(puVar16 + 0xc) == -1" (pointer_expression "*(int *)(puVar16 + 0xc)" (* "*") (cast_expression "(int *)(puVar16 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = param_3 != (int *)0x0 && (bool)cVar20;" (assignment_expression "bVar13 = param_3 != (int *)0x0 && (bool)cVar20" (identifier "bVar13") (= "=") (binary_expression "param_3 != (int *)0x0 && (bool)cVar20" (binary_expression "param_3 != (int *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (cast_expression "(bool)cVar20" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "cVar20")))) (; ";")) (expression_statement "puVar16[0x10] = bVar13;" (assignment_expression "puVar16[0x10] = bVar13" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (if_statement "if (bVar13) {\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }\n      else {\n        puVar16[0x10] = cVar20;\n      }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }\n      }" ({ "{") (if_statement "if ((uint)param_3[2] < (uint)param_3[3]) {\n          puVar16[0x10] = 0;\n        }\n        else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }" (if "if") (parenthesized_expression "((uint)param_3[2] < (uint)param_3[3])" (( "(") (binary_expression "(uint)param_3[2] < (uint)param_3[3]" (cast_expression "(uint)param_3[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(uint)param_3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n          puVar16[0x10] = 0;\n        }" ({ "{") (expression_statement "puVar16[0x10] = 0;" (assignment_expression "puVar16[0x10] = 0" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }" (else "else") (compound_statement "{\n          puVar16[0x28] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;\n          iVar17 = (*pcVar2)();\n          uVar12 = puVar16[0x10];\n          cVar20 = puVar16[0x28];\n          if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }\n          puVar16[0x10] = uVar12;\n        }" ({ "{") (expression_statement "puVar16[0x28] = cVar20;" (assignment_expression "puVar16[0x28] = cVar20" (subscript_expression "puVar16[0x28]" (identifier "puVar16") ([ "[") (number_literal "0x28") (] "]")) (= "=") (identifier "cVar20")) (; ";")) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" (identifier "iVar17") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 0x24)" (* "*") (cast_expression "(code **)(iVar17 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 0x24)" (( "(") (binary_expression "iVar17 + 0x24" (identifier "iVar17") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c42e;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c42e" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27c42e")) (; ";")) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" (identifier "iVar17") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar12 = puVar16[0x10];" (assignment_expression "uVar12 = puVar16[0x10]" (identifier "uVar12") (= "=") (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "cVar20 = puVar16[0x28];" (assignment_expression "cVar20 = puVar16[0x28]" (identifier "cVar20") (= "=") (subscript_expression "puVar16[0x28]" (identifier "puVar16") ([ "[") (number_literal "0x28") (] "]"))) (; ";")) (if_statement "if (iVar17 == -1) {\n            param_3 = (int *)0x0;\n          }\n          else {\n            uVar12 = 0;\n          }" (if "if") (parenthesized_expression "(iVar17 == -1)" (( "(") (binary_expression "iVar17 == -1" (identifier "iVar17") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            param_3 = (int *)0x0;\n          }" ({ "{") (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" (identifier "param_3") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n            uVar12 = 0;\n          }" (else "else") (compound_statement "{\n            uVar12 = 0;\n          }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "puVar16[0x10] = uVar12;" (assignment_expression "puVar16[0x10] = uVar12" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (= "=") (identifier "uVar12")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        puVar16[0x10] = cVar20;\n      }" (else "else") (compound_statement "{\n        puVar16[0x10] = cVar20;\n      }" ({ "{") (expression_statement "puVar16[0x10] = cVar20;" (assignment_expression "puVar16[0x10] = cVar20" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (= "=") (identifier "cVar20")) (; ";")) (} "}")))) (if_statement "if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }\n      else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }" (if "if") (parenthesized_expression "((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0)" (( "(") (binary_expression "(*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0" (parenthesized_expression "(*(int *)(puVar16 + 8) != 0 & puVar16[0x32])" (( "(") (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" (* "*") (cast_expression "(int *)(puVar16 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (number_literal "0")) (& "&") (subscript_expression "puVar16[0x32]" (identifier "puVar16") ([ "[") (number_literal "0x32") (] "]"))) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        cVar21 = puVar16[0x32];\nLAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }\n      }" ({ "{") (expression_statement "cVar21 = puVar16[0x32];" (assignment_expression "cVar21 = puVar16[0x32]" (identifier "cVar21") (= "=") (subscript_expression "puVar16[0x32]" (identifier "puVar16") ([ "[") (number_literal "0x32") (] "]"))) (; ";")) (labeled_statement "LAB_0027bd1f:\n        if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }" (statement_identifier "LAB_0027bd1f") (: ":") (if_statement "if (cVar21 == puVar16[0x10]) {\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }" (if "if") (parenthesized_expression "(cVar21 == puVar16[0x10])" (( "(") (binary_expression "cVar21 == puVar16[0x10]" (identifier "cVar21") (== "==") (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]"))) () ")")) (compound_statement "{\nLAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;\n          break;\n        }" ({ "{") (labeled_statement "LAB_0027c0a4:\n          **(undefined4 **)(puVar16 + 0x9c) = 6;" (statement_identifier "LAB_0027c0a4") (: ":") (expression_statement "**(undefined4 **)(puVar16 + 0x9c) = 6;" (assignment_expression "**(undefined4 **)(puVar16 + 0x9c) = 6" (pointer_expression "**(undefined4 **)(puVar16 + 0x9c)" (* "*") (pointer_expression "*(undefined4 **)(puVar16 + 0x9c)" (* "*") (cast_expression "(undefined4 **)(puVar16 + 0x9c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x9c)" (( "(") (binary_expression "puVar16 + 0x9c" (identifier "puVar16") (+ "+") (number_literal "0x9c")) () ")"))))) (= "=") (number_literal "6")) (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }" (else "else") (compound_statement "{\n        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }\n        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;\n      }" ({ "{") (if_statement "if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }" (if "if") (parenthesized_expression "(*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))" (( "(") (binary_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)" (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc)" (* "*") (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 8) + 0xc)" (( "(") (binary_expression "*(int *)(puVar16 + 8) + 0xc" (pointer_expression "*(int *)(puVar16 + 8)" (* "*") (cast_expression "(int *)(puVar16 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0xc")) () ")")))) (<= "<=") (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 8)" (* "*") (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 8) + 8)" (( "(") (binary_expression "*(int *)(puVar16 + 8) + 8" (pointer_expression "*(int *)(puVar16 + 8)" (* "*") (cast_expression "(int *)(puVar16 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n          puVar16[0x2c] = cVar20;\n          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          piVar9 = *(int **)(puVar16 + 8);\n          iVar17 = *piVar9;\n          *(int **)(puVar16 + -0x10) = piVar9;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;\n          iVar17 = (*pcVar2)();\n          cVar21 = puVar16[0x28];\n          piVar3 = (int *)0x0;\n          if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }\n          cVar20 = puVar16[0x2c];\n          *(int **)(puVar16 + 8) = piVar3;\n          goto LAB_0027bd1f;\n        }" ({ "{") (expression_statement "puVar16[0x2c] = cVar20;" (assignment_expression "puVar16[0x2c] = cVar20" (subscript_expression "puVar16[0x2c]" (identifier "puVar16") ([ "[") (number_literal "0x2c") (] "]")) (= "=") (identifier "cVar20")) (; ";")) (expression_statement "puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" (assignment_expression "puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (subscript_expression "puVar16[0x28]" (identifier "puVar16") ([ "[") (number_literal "0x28") (] "]")) (= "=") (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" (* "*") (cast_expression "(int *)(puVar16 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (number_literal "0")) (& "&") (subscript_expression "puVar16[0x32]" (identifier "puVar16") ([ "[") (number_literal "0x32") (] "]")))) (; ";")) (expression_statement "piVar9 = *(int **)(puVar16 + 8);" (assignment_expression "piVar9 = *(int **)(puVar16 + 8)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(puVar16 + 8)" (* "*") (cast_expression "(int **)(puVar16 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar17 = *piVar9;" (assignment_expression "iVar17 = *piVar9" (identifier "iVar17") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = piVar9;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar9" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 0x24)" (* "*") (cast_expression "(code **)(iVar17 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 0x24)" (( "(") (binary_expression "iVar17 + 0x24" (identifier "iVar17") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c46c;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c46c" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27c46c")) (; ";")) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" (identifier "iVar17") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "cVar21 = puVar16[0x28];" (assignment_expression "cVar21 = puVar16[0x28]" (identifier "cVar21") (= "=") (subscript_expression "puVar16[0x28]" (identifier "puVar16") ([ "[") (number_literal "0x28") (] "]"))) (; ";")) (expression_statement "piVar3 = (int *)0x0;" (assignment_expression "piVar3 = (int *)0x0" (identifier "piVar3") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar17 != -1) {\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }" (if "if") (parenthesized_expression "(iVar17 != -1)" (( "(") (binary_expression "iVar17 != -1" (identifier "iVar17") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n            cVar21 = '\0';\n            piVar3 = piVar9;\n          }" ({ "{") (expression_statement "cVar21 = '\0';" (assignment_expression "cVar21 = '\0'" (identifier "cVar21") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "piVar3 = piVar9;" (assignment_expression "piVar3 = piVar9" (identifier "piVar3") (= "=") (identifier "piVar9")) (; ";")) (} "}"))) (expression_statement "cVar20 = puVar16[0x2c];" (assignment_expression "cVar20 = puVar16[0x2c]" (identifier "cVar20") (= "=") (subscript_expression "puVar16[0x2c]" (identifier "puVar16") ([ "[") (number_literal "0x2c") (] "]"))) (; ";")) (expression_statement "*(int **)(puVar16 + 8) = piVar3;" (assignment_expression "*(int **)(puVar16 + 8) = piVar3" (pointer_expression "*(int **)(puVar16 + 8)" (* "*") (cast_expression "(int **)(puVar16 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (goto_statement "goto LAB_0027bd1f;" (goto "goto") (statement_identifier "LAB_0027bd1f") (; ";")) (} "}"))) (if_statement "if (puVar16[0x10] == '\0') goto LAB_0027c0a4;" (if "if") (parenthesized_expression "(puVar16[0x10] == '\0')" (( "(") (binary_expression "puVar16[0x10] == '\0'" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0027c0a4;" (goto "goto") (statement_identifier "LAB_0027c0a4") (; ";"))) (} "}")))) (expression_statement "bVar7 = *param_10;" (assignment_expression "bVar7 = *param_10" (identifier "bVar7") (= "=") (pointer_expression "*param_10" (* "*") (identifier "param_10"))) (; ";")) (expression_statement "bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);" (assignment_expression "bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d)" (identifier "bVar5") (= "=") (pointer_expression "*(byte *)((int)piVar8 + bVar7 + 0x11d)" (* "*") (cast_expression "(byte *)((int)piVar8 + bVar7 + 0x11d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + bVar7 + 0x11d)" (( "(") (binary_expression "(int)piVar8 + bVar7 + 0x11d" (binary_expression "(int)piVar8 + bVar7" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (identifier "bVar7")) (+ "+") (number_literal "0x11d")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar16 + 0x10) = (uint)bVar7;" (assignment_expression "*(uint *)(puVar16 + 0x10) = (uint)bVar7" (pointer_expression "*(uint *)(puVar16 + 0x10)" (* "*") (cast_expression "(uint *)(puVar16 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (cast_expression "(uint)bVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar7"))) (; ";")) (if_statement "if (bVar5 == 0) {\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }\n      else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }" (if "if") (parenthesized_expression "(bVar5 == 0)" (( "(") (binary_expression "bVar5 == 0" (identifier "bVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        pcVar2 = *(code **)(*piVar8 + 0x20);\n        bVar5 = bVar7;\n        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }\n        if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }\nLAB_0027bc28:\n        iVar17 = piVar8[6];\n        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }\n        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }\n        iVar17 = *piVar8;\n        puVar16[0x10] = cVar20;\n        *(int *)(puVar16 + -0xc) = (int)cVar21;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;\n        cVar20 = (*pcVar2)();\n        iVar17 = *piVar8;\n        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n        *(int **)(puVar16 + -0x10) = piVar8;\n        pcVar2 = *(code **)(iVar17 + 0x10);\n        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;\n        cVar21 = (*pcVar2)();\n        if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }\n        if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }\n        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n        param_10 = param_10 + 1;\nLAB_0027bccc:\n        puVar4 = puVar16;\n        if (*(byte **)(puVar16 + 0xa8) == param_10) break;\n      }" ({ "{") (expression_statement "pcVar2 = *(code **)(*piVar8 + 0x20);" (assignment_expression "pcVar2 = *(code **)(*piVar8 + 0x20)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*piVar8 + 0x20)" (* "*") (cast_expression "(code **)(*piVar8 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar8 + 0x20)" (( "(") (binary_expression "*piVar8 + 0x20" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "bVar5 = bVar7;" (assignment_expression "bVar5 = bVar7" (identifier "bVar5") (= "=") (identifier "bVar7")) (; ";")) (if_statement "if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }" (if "if") (parenthesized_expression "(pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c))" (( "(") (binary_expression "pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" (identifier "pcVar2") (!= "!=") (pointer_expression "*(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" (* "*") (cast_expression "(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 0x14) + -0x24c)" (( "(") (binary_expression "*(int *)(puVar16 + 0x14) + -0x24c" (pointer_expression "*(int *)(puVar16 + 0x14)" (* "*") (cast_expression "(int *)(puVar16 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x14)" (( "(") (binary_expression "puVar16 + 0x14" (identifier "puVar16") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "-0x24c")) () ")"))))) () ")")) (compound_statement "{\n          puVar16[0x28] = cVar20;\n          *(undefined4 *)(puVar16 + -8) = 0;\n          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;\n          bVar5 = (*pcVar2)();\n          cVar20 = puVar16[0x28];\n        }" ({ "{") (expression_statement "puVar16[0x28] = cVar20;" (assignment_expression "puVar16[0x28] = cVar20" (subscript_expression "puVar16[0x28]" (identifier "puVar16") ([ "[") (number_literal "0x28") (] "]")) (= "=") (identifier "cVar20")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)bVar7;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)bVar7" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (cast_expression "(int)(char)bVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar7")))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c190;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c190" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27c190")) (; ";")) (expression_statement "bVar5 = (*pcVar2)();" (assignment_expression "bVar5 = (*pcVar2)()" (identifier "bVar5") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "cVar20 = puVar16[0x28];" (assignment_expression "cVar20 = puVar16[0x28]" (identifier "cVar20") (= "=") (subscript_expression "puVar16[0x28]" (identifier "puVar16") ([ "[") (number_literal "0x28") (] "]"))) (; ";")) (} "}"))) (if_statement "if (bVar5 != 0) {\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }" (if "if") (parenthesized_expression "(bVar5 != 0)" (( "(") (binary_expression "bVar5 != 0" (identifier "bVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;\n          goto LAB_0027bd69;\n        }" ({ "{") (expression_statement "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;" (assignment_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5" (pointer_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d)" (* "*") (cast_expression "(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d)" (( "(") (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d" (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x10)" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (pointer_expression "*(int *)(puVar16 + 0x10)" (* "*") (cast_expression "(int *)(puVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")"))))) (+ "+") (number_literal "0x11d")) () ")")))) (= "=") (identifier "bVar5")) (; ";")) (goto_statement "goto LAB_0027bd69;" (goto "goto") (statement_identifier "LAB_0027bd69") (; ";")) (} "}"))) (labeled_statement "LAB_0027bc28:\n        iVar17 = piVar8[6];" (statement_identifier "LAB_0027bc28") (: ":") (expression_statement "iVar17 = piVar8[6];" (assignment_expression "iVar17 = piVar8[6]" (identifier "iVar17") (= "=") (subscript_expression "piVar8[6]" (identifier "piVar8") ([ "[") (number_literal "6") (] "]"))) (; ";"))) (if_statement "if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }" (if "if") (parenthesized_expression "((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20)" (( "(") (binary_expression "*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20" (pointer_expression "*(byte *)(iVar17 + 1 + (uint)*param_10 * 2)" (* "*") (cast_expression "(byte *)(iVar17 + 1 + (uint)*param_10 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 1 + (uint)*param_10 * 2)" (( "(") (binary_expression "iVar17 + 1 + (uint)*param_10 * 2" (binary_expression "iVar17 + 1" (identifier "iVar17") (+ "+") (number_literal "1")) (+ "+") (binary_expression "(uint)*param_10 * 2" (binary_expression "(uint)*param_10" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_10")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          pbVar18 = param_10 + 1;\n          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }\n          *(byte **)(puVar16 + 0xa4) = pbVar18;\n          uVar19 = *(uint *)(puVar16 + 0xc);\n          *(int **)(puVar16 + 0x10) = piVar8;\n          cVar20 = uVar19 == 0xffffffff;\n          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;\n          bVar13 = (bool)cVar20;\n          if (bVar14) goto LAB_0027bfff;\nLAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n          if (bVar7 != 0) goto LAB_0027c01c;\nLAB_0027bfb1:\n          cVar21 = puVar16[0x32];\nLAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }\n          *(uint *)(puVar16 + 0xc) = uVar19;\n          piVar8 = *(int **)(puVar16 + 0x10);\n          param_10 = *(byte **)(puVar16 + 0xa4);\n          goto LAB_0027bccc;\n        }" ({ "{") (expression_statement "pbVar18 = param_10 + 1;" (assignment_expression "pbVar18 = param_10 + 1" (identifier "pbVar18") (= "=") (binary_expression "param_10 + 1" (identifier "param_10") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(byte **)(puVar16 + 0xa8) == pbVar18) {\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }\n          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }" (if "if") (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == pbVar18)" (( "(") (binary_expression "*(byte **)(puVar16 + 0xa8) == pbVar18" (pointer_expression "*(byte **)(puVar16 + 0xa8)" (* "*") (cast_expression "(byte **)(puVar16 + 0xa8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0xa8)" (( "(") (binary_expression "puVar16 + 0xa8" (identifier "puVar16") (+ "+") (number_literal "0xa8")) () ")")))) (== "==") (identifier "pbVar18")) () ")")) (compound_statement "{\n            pbVar18 = *(byte **)(puVar16 + 0xa8);\n          }" ({ "{") (expression_statement "pbVar18 = *(byte **)(puVar16 + 0xa8);" (assignment_expression "pbVar18 = *(byte **)(puVar16 + 0xa8)" (identifier "pbVar18") (= "=") (pointer_expression "*(byte **)(puVar16 + 0xa8)" (* "*") (cast_expression "(byte **)(puVar16 + 0xa8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0xa8)" (( "(") (binary_expression "puVar16 + 0xa8" (identifier "puVar16") (+ "+") (number_literal "0xa8")) () ")"))))) (; ";")) (} "}")) (else_clause "else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }" (else "else") (if_statement "if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }" (if "if") (parenthesized_expression "((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20)" (( "(") (binary_expression "*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20" (pointer_expression "*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2)" (* "*") (cast_expression "(byte *)(iVar17 + 1 + (uint)param_10[1] * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 1 + (uint)param_10[1] * 2)" (( "(") (binary_expression "iVar17 + 1 + (uint)param_10[1] * 2" (binary_expression "iVar17 + 1" (identifier "iVar17") (+ "+") (number_literal "1")) (+ "+") (binary_expression "(uint)param_10[1] * 2" (cast_expression "(uint)param_10[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_10[1]" (identifier "param_10") ([ "[") (number_literal "1") (] "]"))) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);\n          }" ({ "{") (do_statement "do {\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);" (do "do") (compound_statement "{\n              pbVar18 = pbVar18 + 1;\n              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;\n            }" ({ "{") (expression_statement "pbVar18 = pbVar18 + 1;" (assignment_expression "pbVar18 = pbVar18 + 1" (identifier "pbVar18") (= "=") (binary_expression "pbVar18 + 1" (identifier "pbVar18") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;" (if "if") (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == pbVar18)" (( "(") (binary_expression "*(byte **)(puVar16 + 0xa8) == pbVar18" (pointer_expression "*(byte **)(puVar16 + 0xa8)" (* "*") (cast_expression "(byte **)(puVar16 + 0xa8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0xa8)" (( "(") (binary_expression "puVar16 + 0xa8" (identifier "puVar16") (+ "+") (number_literal "0xa8")) () ")")))) (== "==") (identifier "pbVar18")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20)" (( "(") (binary_expression "*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20" (pointer_expression "*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2)" (* "*") (cast_expression "(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 1 + (uint)*pbVar18 * 2)" (( "(") (binary_expression "iVar17 + 1 + (uint)*pbVar18 * 2" (binary_expression "iVar17 + 1" (identifier "iVar17") (+ "+") (number_literal "1")) (+ "+") (binary_expression "(uint)*pbVar18 * 2" (binary_expression "(uint)*pbVar18" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar18")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))))) (expression_statement "*(byte **)(puVar16 + 0xa4) = pbVar18;" (assignment_expression "*(byte **)(puVar16 + 0xa4) = pbVar18" (pointer_expression "*(byte **)(puVar16 + 0xa4)" (* "*") (cast_expression "(byte **)(puVar16 + 0xa4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0xa4)" (( "(") (binary_expression "puVar16 + 0xa4" (identifier "puVar16") (+ "+") (number_literal "0xa4")) () ")")))) (= "=") (identifier "pbVar18")) (; ";")) (expression_statement "uVar19 = *(uint *)(puVar16 + 0xc);" (assignment_expression "uVar19 = *(uint *)(puVar16 + 0xc)" (identifier "uVar19") (= "=") (pointer_expression "*(uint *)(puVar16 + 0xc)" (* "*") (cast_expression "(uint *)(puVar16 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(int **)(puVar16 + 0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + 0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + 0x10)" (* "*") (cast_expression "(int **)(puVar16 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (expression_statement "cVar20 = uVar19 == 0xffffffff;" (assignment_expression "cVar20 = uVar19 == 0xffffffff" (identifier "cVar20") (= "=") (binary_expression "uVar19 == 0xffffffff" (identifier "uVar19") (== "==") (number_literal "0xffffffff"))) (; ";")) (expression_statement "bVar14 = param_3 != (int *)0x0 && (bool)cVar20;" (assignment_expression "bVar14 = param_3 != (int *)0x0 && (bool)cVar20" (identifier "bVar14") (= "=") (binary_expression "param_3 != (int *)0x0 && (bool)cVar20" (binary_expression "param_3 != (int *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (cast_expression "(bool)cVar20" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "cVar20")))) (; ";")) (expression_statement "bVar13 = (bool)cVar20;" (assignment_expression "bVar13 = (bool)cVar20" (identifier "bVar13") (= "=") (cast_expression "(bool)cVar20" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "cVar20"))) (; ";")) (if_statement "if (bVar14) goto LAB_0027bfff;" (if "if") (parenthesized_expression "(bVar14)" (( "(") (identifier "bVar14") () ")")) (goto_statement "goto LAB_0027bfff;" (goto "goto") (statement_identifier "LAB_0027bfff") (; ";"))) (labeled_statement "LAB_0027bfa2:\n          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" (statement_identifier "LAB_0027bfa2") (: ":") (expression_statement "bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" (assignment_expression "bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (identifier "bVar7") (= "=") (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" (* "*") (cast_expression "(int *)(puVar16 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (number_literal "0")) (& "&") (subscript_expression "puVar16[0x32]" (identifier "puVar16") ([ "[") (number_literal "0x32") (] "]")))) (; ";"))) (if_statement "if (bVar7 != 0) goto LAB_0027c01c;" (if "if") (parenthesized_expression "(bVar7 != 0)" (( "(") (binary_expression "bVar7 != 0" (identifier "bVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0027c01c;" (goto "goto") (statement_identifier "LAB_0027c01c") (; ";"))) (labeled_statement "LAB_0027bfb1:\n          cVar21 = puVar16[0x32];" (statement_identifier "LAB_0027bfb1") (: ":") (expression_statement "cVar21 = puVar16[0x32];" (assignment_expression "cVar21 = puVar16[0x32]" (identifier "cVar21") (= "=") (subscript_expression "puVar16[0x32]" (identifier "puVar16") ([ "[") (number_literal "0x32") (] "]"))) (; ";"))) (labeled_statement "LAB_0027bfb6:\n          if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }" (statement_identifier "LAB_0027bfb6") (: ":") (if_statement "if ((bool)cVar21 != bVar13) {\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }" (if "if") (parenthesized_expression "((bool)cVar21 != bVar13)" (( "(") (binary_expression "(bool)cVar21 != bVar13" (cast_expression "(bool)cVar21" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "cVar21")) (!= "!=") (identifier "bVar13")) () ")")) (compound_statement "{\n            do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );\n          }" ({ "{") (do_statement "do {\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            } while( true );" (do "do") (compound_statement "{\n              uVar10 = uVar19;\n              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }\n              uVar19 = 0xffffffff;\n              cVar20 = true;\n              bVar14 = param_3 != (int *)0x0;\n              bVar13 = (bool)cVar20;\n              if (!bVar14) goto LAB_0027bfa2;\nLAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }\n              bVar13 = false;\n              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];\n              if (bVar7 == 0) goto LAB_0027bfb1;\nLAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;\n              if (bVar13 == false) break;\n            }" ({ "{") (expression_statement "uVar10 = uVar19;" (assignment_expression "uVar10 = uVar19" (identifier "uVar10") (= "=") (identifier "uVar19")) (; ";")) (if_statement "if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }\n              else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }" (if "if") (parenthesized_expression "((param_3 == (int *)0x0) || (cVar20 == '\0'))" (( "(") (binary_expression "(param_3 == (int *)0x0) || (cVar20 == '\0')" (parenthesized_expression "(param_3 == (int *)0x0)" (( "(") (binary_expression "param_3 == (int *)0x0" (identifier "param_3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(cVar20 == '\0')" (( "(") (binary_expression "cVar20 == '\0'" (identifier "cVar20") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\nLAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;\n                pbVar18 = (byte *)param_3[2];\n                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x28);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;\n                (*pcVar2)();\n              }" ({ "{") (labeled_statement "LAB_0027bfc8:\n                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;" (statement_identifier "LAB_0027bfc8") (: ":") (if_statement "if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0) break;" (if "if") (parenthesized_expression "((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20) == 0" (parenthesized_expression "(*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20)" (( "(") (binary_expression "*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)\n                    & 0x20" (pointer_expression "*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)" (* "*") (cast_expression "(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)" (( "(") (binary_expression "*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2" (binary_expression "*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1" (pointer_expression "*(int *)(*(int *)(puVar16 + 0x10) + 0x18)" (* "*") (cast_expression "(int *)(*(int *)(puVar16 + 0x10) + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 0x10) + 0x18)" (( "(") (binary_expression "*(int *)(puVar16 + 0x10) + 0x18" (pointer_expression "*(int *)(puVar16 + 0x10)" (* "*") (cast_expression "(int *)(puVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "1")) (+ "+") (binary_expression "(uVar10 & 0xff) * 2" (parenthesized_expression "(uVar10 & 0xff)" (( "(") (binary_expression "uVar10 & 0xff" (identifier "uVar10") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";")))) (expression_statement "pbVar18 = (byte *)param_3[2];" (assignment_expression "pbVar18 = (byte *)param_3[2]" (identifier "pbVar18") (= "=") (cast_expression "(byte *)param_3[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;" (if "if") (parenthesized_expression "(pbVar18 < (byte *)param_3[3])" (( "(") (binary_expression "pbVar18 < (byte *)param_3[3]" (identifier "pbVar18") (< "<") (cast_expression "(byte *)param_3[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")))) () ")")) (goto_statement "goto LAB_0027bfe5;" (goto "goto") (statement_identifier "LAB_0027bfe5") (; ";"))) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" (identifier "iVar17") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x28)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 0x28)" (* "*") (cast_expression "(code **)(iVar17 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 0x28)" (( "(") (binary_expression "iVar17 + 0x28" (identifier "iVar17") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c0e9" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27c0e9")) (; ";")) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }" (else "else") (compound_statement "{\n                pbVar18 = (byte *)param_3[2];\n                if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }\n                piVar8 = *(int **)(puVar16 + 0x10);\n                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }\nLAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);\n              }" ({ "{") (expression_statement "pbVar18 = (byte *)param_3[2];" (assignment_expression "pbVar18 = (byte *)param_3[2]" (identifier "pbVar18") (= "=") (cast_expression "(byte *)param_3[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if ((byte *)param_3[3] <= pbVar18) {\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }" (if "if") (parenthesized_expression "((byte *)param_3[3] <= pbVar18)" (( "(") (binary_expression "(byte *)param_3[3] <= pbVar18" (cast_expression "(byte *)param_3[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (identifier "pbVar18")) () ")")) (compound_statement "{\n                  iVar17 = *param_3;\n                  *(int **)(puVar16 + -0x10) = param_3;\n                  pcVar2 = *(code **)(iVar17 + 0x24);\n                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;\n                  uVar10 = (*pcVar2)();\n                  if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }\n                  goto LAB_0027bfc8;\n                }" ({ "{") (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" (identifier "iVar17") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 0x24)" (* "*") (cast_expression "(code **)(iVar17 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 0x24)" (( "(") (binary_expression "iVar17 + 0x24" (identifier "iVar17") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c3ae" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27c3ae")) (; ";")) (expression_statement "uVar10 = (*pcVar2)();" (assignment_expression "uVar10 = (*pcVar2)()" (identifier "uVar10") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (uVar10 == 0xffffffff) {\n                    param_3 = (int *)0x0;\n                  }" (if "if") (parenthesized_expression "(uVar10 == 0xffffffff)" (( "(") (binary_expression "uVar10 == 0xffffffff" (identifier "uVar10") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n                    param_3 = (int *)0x0;\n                  }" ({ "{") (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" (identifier "param_3") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0027bfc8;" (goto "goto") (statement_identifier "LAB_0027bfc8") (; ";")) (} "}"))) (expression_statement "piVar8 = *(int **)(puVar16 + 0x10);" (assignment_expression "piVar8 = *(int **)(puVar16 + 0x10)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(puVar16 + 0x10)" (* "*") (cast_expression "(int **)(puVar16 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }" (if "if") (parenthesized_expression "((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0" (parenthesized_expression "(*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20)" (( "(") (binary_expression "*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20" (pointer_expression "*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2)" (* "*") (cast_expression "(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8[6] + 1 + (uint)*pbVar18 * 2)" (( "(") (binary_expression "piVar8[6] + 1 + (uint)*pbVar18 * 2" (binary_expression "piVar8[6] + 1" (subscript_expression "piVar8[6]" (identifier "piVar8") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "1")) (+ "+") (binary_expression "(uint)*pbVar18 * 2" (binary_expression "(uint)*pbVar18" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar18")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  param_10 = *(byte **)(puVar16 + 0xa4);\n                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;\n                  goto LAB_0027bccc;\n                }" ({ "{") (expression_statement "param_10 = *(byte **)(puVar16 + 0xa4);" (assignment_expression "param_10 = *(byte **)(puVar16 + 0xa4)" (identifier "param_10") (= "=") (pointer_expression "*(byte **)(puVar16 + 0xa4)" (* "*") (cast_expression "(byte **)(puVar16 + 0xa4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0xa4)" (( "(") (binary_expression "puVar16 + 0xa4" (identifier "puVar16") (+ "+") (number_literal "0xa4")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (goto_statement "goto LAB_0027bccc;" (goto "goto") (statement_identifier "LAB_0027bccc") (; ";")) (} "}"))) (labeled_statement "LAB_0027bfe5:\n                param_3[2] = (int)(pbVar18 + 1);" (statement_identifier "LAB_0027bfe5") (: ":") (expression_statement "param_3[2] = (int)(pbVar18 + 1);" (assignment_expression "param_3[2] = (int)(pbVar18 + 1)" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)(pbVar18 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pbVar18 + 1)" (( "(") (binary_expression "pbVar18 + 1" (identifier "pbVar18") (+ "+") (number_literal "1")) () ")")))) (; ";"))) (} "}")))) (expression_statement "uVar19 = 0xffffffff;" (assignment_expression "uVar19 = 0xffffffff" (identifier "uVar19") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "cVar20 = true;" (assignment_expression "cVar20 = true" (identifier "cVar20") (= "=") (true "true")) (; ";")) (expression_statement "bVar14 = param_3 != (int *)0x0;" (assignment_expression "bVar14 = param_3 != (int *)0x0" (identifier "bVar14") (= "=") (binary_expression "param_3 != (int *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "bVar13 = (bool)cVar20;" (assignment_expression "bVar13 = (bool)cVar20" (identifier "bVar13") (= "=") (cast_expression "(bool)cVar20" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "cVar20"))) (; ";")) (if_statement "if (!bVar14) goto LAB_0027bfa2;" (if "if") (parenthesized_expression "(!bVar14)" (( "(") (unary_expression "!bVar14" (! "!") (identifier "bVar14")) () ")")) (goto_statement "goto LAB_0027bfa2;" (goto "goto") (statement_identifier "LAB_0027bfa2") (; ";"))) (labeled_statement "LAB_0027bfff:\n              if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }" (statement_identifier "LAB_0027bfff") (: ":") (if_statement "if ((uint)param_3[3] <= (uint)param_3[2]) {\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }" (if "if") (parenthesized_expression "((uint)param_3[3] <= (uint)param_3[2])" (( "(") (binary_expression "(uint)param_3[3] <= (uint)param_3[2]" (cast_expression "(uint)param_3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(uint)param_3[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n                puVar16[0xc] = cVar20;\n                iVar17 = *param_3;\n                *(int **)(puVar16 + -0x10) = param_3;\n                pcVar2 = *(code **)(iVar17 + 0x24);\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;\n                iVar17 = (*pcVar2)();\n                bVar13 = false;\n                if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }\n                cVar20 = puVar16[0xc];\n                goto LAB_0027bfa2;\n              }" ({ "{") (expression_statement "puVar16[0xc] = cVar20;" (assignment_expression "puVar16[0xc] = cVar20" (subscript_expression "puVar16[0xc]" (identifier "puVar16") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "cVar20")) (; ";")) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" (identifier "iVar17") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 0x24)" (* "*") (cast_expression "(code **)(iVar17 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 0x24)" (( "(") (binary_expression "iVar17 + 0x24" (identifier "iVar17") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c30d;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c30d" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27c30d")) (; ";")) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" (identifier "iVar17") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (if_statement "if (iVar17 == -1) {\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }" (if "if") (parenthesized_expression "(iVar17 == -1)" (( "(") (binary_expression "iVar17 == -1" (identifier "iVar17") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n                  param_3 = (int *)0x0;\n                  bVar13 = bVar14;\n                }" ({ "{") (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" (identifier "param_3") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "bVar13 = bVar14;" (assignment_expression "bVar13 = bVar14" (identifier "bVar13") (= "=") (identifier "bVar14")) (; ";")) (} "}"))) (expression_statement "cVar20 = puVar16[0xc];" (assignment_expression "cVar20 = puVar16[0xc]" (identifier "cVar20") (= "=") (subscript_expression "puVar16[0xc]" (identifier "puVar16") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (goto_statement "goto LAB_0027bfa2;" (goto "goto") (statement_identifier "LAB_0027bfa2") (; ";")) (} "}")))) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (expression_statement "bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];" (assignment_expression "bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (identifier "bVar7") (= "=") (binary_expression "*(int *)(puVar16 + 8) != 0 & puVar16[0x32]" (binary_expression "*(int *)(puVar16 + 8) != 0" (pointer_expression "*(int *)(puVar16 + 8)" (* "*") (cast_expression "(int *)(puVar16 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (number_literal "0")) (& "&") (subscript_expression "puVar16[0x32]" (identifier "puVar16") ([ "[") (number_literal "0x32") (] "]")))) (; ";")) (if_statement "if (bVar7 == 0) goto LAB_0027bfb1;" (if "if") (parenthesized_expression "(bVar7 == 0)" (( "(") (binary_expression "bVar7 == 0" (identifier "bVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0027bfb1;" (goto "goto") (statement_identifier "LAB_0027bfb1") (; ";"))) (labeled_statement "LAB_0027c01c:\n              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;" (statement_identifier "LAB_0027c01c") (: ":") (if_statement "if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))\n              goto LAB_0027c2c0;" (if "if") (parenthesized_expression "(*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))" (( "(") (binary_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)" (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 0xc)" (* "*") (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 8) + 0xc)" (( "(") (binary_expression "*(int *)(puVar16 + 8) + 0xc" (pointer_expression "*(int *)(puVar16 + 8)" (* "*") (cast_expression "(int *)(puVar16 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0xc")) () ")")))) (<= "<=") (pointer_expression "*(uint *)(*(int *)(puVar16 + 8) + 8)" (* "*") (cast_expression "(uint *)(*(int *)(puVar16 + 8) + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 8) + 8)" (( "(") (binary_expression "*(int *)(puVar16 + 8) + 8" (pointer_expression "*(int *)(puVar16 + 8)" (* "*") (cast_expression "(int *)(puVar16 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) () ")")) (goto_statement "goto LAB_0027c2c0;" (goto "goto") (statement_identifier "LAB_0027c2c0") (; ";")))) (if_statement "if (bVar13 == false) break;" (if "if") (parenthesized_expression "(bVar13 == false)" (( "(") (binary_expression "bVar13 == false" (identifier "bVar13") (== "==") (false "false")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))) (expression_statement "*(uint *)(puVar16 + 0xc) = uVar19;" (assignment_expression "*(uint *)(puVar16 + 0xc) = uVar19" (pointer_expression "*(uint *)(puVar16 + 0xc)" (* "*") (cast_expression "(uint *)(puVar16 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar19")) (; ";")) (expression_statement "piVar8 = *(int **)(puVar16 + 0x10);" (assignment_expression "piVar8 = *(int **)(puVar16 + 0x10)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(puVar16 + 0x10)" (* "*") (cast_expression "(int **)(puVar16 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x10)" (( "(") (binary_expression "puVar16 + 0x10" (identifier "puVar16") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "param_10 = *(byte **)(puVar16 + 0xa4);" (assignment_expression "param_10 = *(byte **)(puVar16 + 0xa4)" (identifier "param_10") (= "=") (pointer_expression "*(byte **)(puVar16 + 0xa4)" (* "*") (cast_expression "(byte **)(puVar16 + 0xa4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0xa4)" (( "(") (binary_expression "puVar16 + 0xa4" (identifier "puVar16") (+ "+") (number_literal "0xa4")) () ")"))))) (; ";")) (goto_statement "goto LAB_0027bccc;" (goto "goto") (statement_identifier "LAB_0027bccc") (; ";")) (} "}"))) (if_statement "if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {\n          cVar21 = puVar16[0xc];\n        }\n        else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" (if "if") (parenthesized_expression "((param_3 == (int *)0x0) || (cVar20 == '\0'))" (( "(") (binary_expression "(param_3 == (int *)0x0) || (cVar20 == '\0')" (parenthesized_expression "(param_3 == (int *)0x0)" (( "(") (binary_expression "param_3 == (int *)0x0" (identifier "param_3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(cVar20 == '\0')" (( "(") (binary_expression "cVar20 == '\0'" (identifier "cVar20") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n          cVar21 = puVar16[0xc];\n        }" ({ "{") (expression_statement "cVar21 = puVar16[0xc];" (assignment_expression "cVar21 = puVar16[0xc]" (identifier "cVar21") (= "=") (subscript_expression "puVar16[0xc]" (identifier "puVar16") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (} "}")) (else_clause "else if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" (else "else") (if_statement "if ((char *)param_3[2] < (char *)param_3[3]) {\n          cVar21 = *(char *)param_3[2];\n        }\n        else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" (if "if") (parenthesized_expression "((char *)param_3[2] < (char *)param_3[3])" (( "(") (binary_expression "(char *)param_3[2] < (char *)param_3[3]" (cast_expression "(char *)param_3[2]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(char *)param_3[3]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n          cVar21 = *(char *)param_3[2];\n        }" ({ "{") (expression_statement "cVar21 = *(char *)param_3[2];" (assignment_expression "cVar21 = *(char *)param_3[2]" (identifier "cVar21") (= "=") (pointer_expression "*(char *)param_3[2]" (* "*") (cast_expression "(char *)param_3[2]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" (else "else") (compound_statement "{\n          puVar16[0x10] = cVar20;\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x24);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;\n          iVar11 = (*pcVar2)();\n          cVar20 = puVar16[0x10];\n          iVar17 = -1;\n          if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }\n          cVar21 = (char)iVar17;\n          if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }\n        }" ({ "{") (expression_statement "puVar16[0x10] = cVar20;" (assignment_expression "puVar16[0x10] = cVar20" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (= "=") (identifier "cVar20")) (; ";")) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" (identifier "iVar17") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 0x24)" (* "*") (cast_expression "(code **)(iVar17 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 0x24)" (( "(") (binary_expression "iVar17 + 0x24" (identifier "iVar17") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c4df;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c4df" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27c4df")) (; ";")) (expression_statement "iVar11 = (*pcVar2)();" (assignment_expression "iVar11 = (*pcVar2)()" (identifier "iVar11") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "cVar20 = puVar16[0x10];" (assignment_expression "cVar20 = puVar16[0x10]" (identifier "cVar20") (= "=") (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "iVar17 = -1;" (assignment_expression "iVar17 = -1" (identifier "iVar17") (= "=") (number_literal "-1")) (; ";")) (if_statement "if (iVar11 != -1) {\n            iVar17 = iVar11;\n          }" (if "if") (parenthesized_expression "(iVar11 != -1)" (( "(") (binary_expression "iVar11 != -1" (identifier "iVar11") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n            iVar17 = iVar11;\n          }" ({ "{") (expression_statement "iVar17 = iVar11;" (assignment_expression "iVar17 = iVar11" (identifier "iVar17") (= "=") (identifier "iVar11")) (; ";")) (} "}"))) (expression_statement "cVar21 = (char)iVar17;" (assignment_expression "cVar21 = (char)iVar17" (identifier "cVar21") (= "=") (cast_expression "(char)iVar17" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar17"))) (; ";")) (if_statement "if (iVar11 == -1) {\n            param_3 = (int *)0x0;\n          }" (if "if") (parenthesized_expression "(iVar11 == -1)" (( "(") (binary_expression "iVar11 == -1" (identifier "iVar11") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            param_3 = (int *)0x0;\n          }" ({ "{") (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" (identifier "param_3") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (} "}")))))) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" (identifier "iVar17") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "puVar16[0x10] = cVar20;" (assignment_expression "puVar16[0x10] = cVar20" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (= "=") (identifier "cVar20")) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = (int)cVar21;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)cVar21" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (cast_expression "(int)cVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar21"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x10);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x10)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 0x10)" (* "*") (cast_expression "(code **)(iVar17 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 0x10)" (( "(") (binary_expression "iVar17 + 0x10" (identifier "iVar17") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bc5c" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27bc5c")) (; ";")) (expression_statement "cVar20 = (*pcVar2)();" (assignment_expression "cVar20 = (*pcVar2)()" (identifier "cVar20") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" (identifier "iVar17") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)*param_10;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)*param_10" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (cast_expression "(int)(char)*param_10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*param_10" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*param_10" (* "*") (identifier "param_10"))))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x10);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x10)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 0x10)" (* "*") (cast_expression "(code **)(iVar17 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 0x10)" (( "(") (binary_expression "iVar17 + 0x10" (identifier "iVar17") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bc6b" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27bc6b")) (; ";")) (expression_statement "cVar21 = (*pcVar2)();" (assignment_expression "cVar21 = (*pcVar2)()" (identifier "cVar21") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar21 != cVar20) {\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }" (if "if") (parenthesized_expression "(cVar21 != cVar20)" (( "(") (binary_expression "cVar21 != cVar20" (identifier "cVar21") (!= "!=") (identifier "cVar20")) () ")")) (compound_statement "{\n          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)cVar20;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;\n          cVar20 = (*pcVar2)();\n          iVar17 = *piVar8;\n          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;\n          *(int **)(puVar16 + -0x10) = piVar8;\n          pcVar2 = *(code **)(iVar17 + 8);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;\n          cVar21 = (*pcVar2)();\n          if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }\n        }" ({ "{") (if_statement "if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {\n            cVar20 = puVar16[0xc];\n          }\n          else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" (if "if") (parenthesized_expression "((param_3 == (int *)0x0) || (puVar16[0x10] == '\0'))" (( "(") (binary_expression "(param_3 == (int *)0x0) || (puVar16[0x10] == '\0')" (parenthesized_expression "(param_3 == (int *)0x0)" (( "(") (binary_expression "param_3 == (int *)0x0" (identifier "param_3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(puVar16[0x10] == '\0')" (( "(") (binary_expression "puVar16[0x10] == '\0'" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            cVar20 = puVar16[0xc];\n          }" ({ "{") (expression_statement "cVar20 = puVar16[0xc];" (assignment_expression "cVar20 = puVar16[0xc]" (identifier "cVar20") (= "=") (subscript_expression "puVar16[0xc]" (identifier "puVar16") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (} "}")) (else_clause "else if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" (else "else") (if_statement "if ((char *)param_3[2] < (char *)param_3[3]) {\n            cVar20 = *(char *)param_3[2];\n          }\n          else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" (if "if") (parenthesized_expression "((char *)param_3[2] < (char *)param_3[3])" (( "(") (binary_expression "(char *)param_3[2] < (char *)param_3[3]" (cast_expression "(char *)param_3[2]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(char *)param_3[3]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n            cVar20 = *(char *)param_3[2];\n          }" ({ "{") (expression_statement "cVar20 = *(char *)param_3[2];" (assignment_expression "cVar20 = *(char *)param_3[2]" (identifier "cVar20") (= "=") (pointer_expression "*(char *)param_3[2]" (* "*") (cast_expression "(char *)param_3[2]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" (else "else") (compound_statement "{\n            iVar17 = *param_3;\n            *(int **)(puVar16 + -0x10) = param_3;\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;\n            iVar11 = (*pcVar2)();\n            iVar17 = -1;\n            if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }\n            cVar20 = (char)iVar17;\n            if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }\n          }" ({ "{") (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" (identifier "iVar17") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 0x24)" (* "*") (cast_expression "(code **)(iVar17 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 0x24)" (( "(") (binary_expression "iVar17 + 0x24" (identifier "iVar17") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c50a;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c50a" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27c50a")) (; ";")) (expression_statement "iVar11 = (*pcVar2)();" (assignment_expression "iVar11 = (*pcVar2)()" (identifier "iVar11") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar17 = -1;" (assignment_expression "iVar17 = -1" (identifier "iVar17") (= "=") (number_literal "-1")) (; ";")) (if_statement "if (iVar11 != -1) {\n              iVar17 = iVar11;\n            }" (if "if") (parenthesized_expression "(iVar11 != -1)" (( "(") (binary_expression "iVar11 != -1" (identifier "iVar11") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n              iVar17 = iVar11;\n            }" ({ "{") (expression_statement "iVar17 = iVar11;" (assignment_expression "iVar17 = iVar11" (identifier "iVar17") (= "=") (identifier "iVar11")) (; ";")) (} "}"))) (expression_statement "cVar20 = (char)iVar17;" (assignment_expression "cVar20 = (char)iVar17" (identifier "cVar20") (= "=") (cast_expression "(char)iVar17" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar17"))) (; ";")) (if_statement "if (iVar11 == -1) {\n              param_3 = (int *)0x0;\n            }" (if "if") (parenthesized_expression "(iVar11 == -1)" (( "(") (binary_expression "iVar11 == -1" (identifier "iVar11") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              param_3 = (int *)0x0;\n            }" ({ "{") (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" (identifier "param_3") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (} "}")))))) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" (identifier "iVar17") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = (int)cVar20;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)cVar20" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (cast_expression "(int)cVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar20"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 8);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 8)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 8)" (* "*") (cast_expression "(code **)(iVar17 + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 8)" (( "(") (binary_expression "iVar17 + 8" (identifier "iVar17") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bc95;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bc95" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27bc95")) (; ";")) (expression_statement "cVar20 = (*pcVar2)();" (assignment_expression "cVar20 = (*pcVar2)()" (identifier "cVar20") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" (identifier "iVar17") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)*param_10;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)*param_10" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (cast_expression "(int)(char)*param_10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*param_10" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*param_10" (* "*") (identifier "param_10"))))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 8);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 8)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 8)" (* "*") (cast_expression "(code **)(iVar17 + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 8)" (( "(") (binary_expression "iVar17 + 8" (identifier "iVar17") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27bca4;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27bca4" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27bca4")) (; ";")) (expression_statement "cVar21 = (*pcVar2)();" (assignment_expression "cVar21 = (*pcVar2)()" (identifier "cVar21") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar21 != cVar20) {\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }" (if "if") (parenthesized_expression "(cVar21 != cVar20)" (( "(") (binary_expression "cVar21 != cVar20" (identifier "cVar21") (!= "!=") (identifier "cVar20")) () ")")) (compound_statement "{\nLAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;\n            break;\n          }" ({ "{") (labeled_statement "LAB_0027c4c0:\n            **(undefined4 **)(puVar16 + 0x9c) = 4;" (statement_identifier "LAB_0027c4c0") (: ":") (expression_statement "**(undefined4 **)(puVar16 + 0x9c) = 4;" (assignment_expression "**(undefined4 **)(puVar16 + 0x9c) = 4" (pointer_expression "**(undefined4 **)(puVar16 + 0x9c)" (* "*") (pointer_expression "*(undefined4 **)(puVar16 + 0x9c)" (* "*") (cast_expression "(undefined4 **)(puVar16 + 0x9c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x9c)" (( "(") (binary_expression "puVar16 + 0x9c" (identifier "puVar16") (+ "+") (number_literal "0x9c")) () ")"))))) (= "=") (number_literal "4")) (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (} "}"))) (if_statement "if ((uint)param_3[2] < (uint)param_3[3]) {\n          param_3[2] = param_3[2] + 1;\n        }\n        else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }" (if "if") (parenthesized_expression "((uint)param_3[2] < (uint)param_3[3])" (( "(") (binary_expression "(uint)param_3[2] < (uint)param_3[3]" (cast_expression "(uint)param_3[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(uint)param_3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n          param_3[2] = param_3[2] + 1;\n        }" ({ "{") (expression_statement "param_3[2] = param_3[2] + 1;" (assignment_expression "param_3[2] = param_3[2] + 1" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "param_3[2] + 1" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }" (else "else") (compound_statement "{\n          iVar17 = *param_3;\n          *(int **)(puVar16 + -0x10) = param_3;\n          pcVar2 = *(code **)(iVar17 + 0x28);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;\n          (*pcVar2)();\n        }" ({ "{") (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" (identifier "iVar17") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = param_3;" (assignment_expression "*(int **)(puVar16 + -0x10) = param_3" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x28);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x28)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 0x28)" (* "*") (cast_expression "(code **)(iVar17 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 0x28)" (( "(") (binary_expression "iVar17 + 0x28" (identifier "iVar17") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c419;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c419" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27c419")) (; ";")) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar16 + 0xc) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "param_10 = param_10 + 1;" (assignment_expression "param_10 = param_10 + 1" (identifier "param_10") (= "=") (binary_expression "param_10 + 1" (identifier "param_10") (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "LAB_0027bccc:\n        puVar4 = puVar16;" (statement_identifier "LAB_0027bccc") (: ":") (expression_statement "puVar4 = puVar16;" (assignment_expression "puVar4 = puVar16" (identifier "puVar4") (= "=") (identifier "puVar16")) (; ";"))) (if_statement "if (*(byte **)(puVar16 + 0xa8) == param_10) break;" (if "if") (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == param_10)" (( "(") (binary_expression "*(byte **)(puVar16 + 0xa8) == param_10" (pointer_expression "*(byte **)(puVar16 + 0xa8)" (* "*") (cast_expression "(byte **)(puVar16 + 0xa8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0xa8)" (( "(") (binary_expression "puVar16 + 0xa8" (identifier "puVar16") (+ "+") (number_literal "0xa8")) () ")")))) (== "==") (identifier "param_10")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else {\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }" (else "else") (compound_statement "{\nLAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;\n        *(byte **)(puVar16 + 0x28) = param_10 + 1;\n        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;\n        bVar7 = param_10[1];\n        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;\n        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);\n        puVar16[0x10] = cVar20;\n        uVar12 = 0x25;\n        if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }\n        puVar16[0x33] = uVar12;\n        puVar16[0x2c] = bVar7;\n        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);\n        if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }\n        puVar15 = puVar16 + -4;\n        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);\n        puVar1 = (undefined4 *)(puVar16 + 0xa4);\n        puVar16 = puVar16 + -4;\n        puVar4 = puVar15;\n        if ((byte *)*puVar1 == param_10) break;\n      }" ({ "{") (labeled_statement "LAB_0027bd69:\n        if (bVar5 != 0x25) goto LAB_0027bc28;" (statement_identifier "LAB_0027bd69") (: ":") (if_statement "if (bVar5 != 0x25) goto LAB_0027bc28;" (if "if") (parenthesized_expression "(bVar5 != 0x25)" (( "(") (binary_expression "bVar5 != 0x25" (identifier "bVar5") (!= "!=") (number_literal "0x25")) () ")")) (goto_statement "goto LAB_0027bc28;" (goto "goto") (statement_identifier "LAB_0027bc28") (; ";")))) (expression_statement "*(byte **)(puVar16 + 0x28) = param_10 + 1;" (assignment_expression "*(byte **)(puVar16 + 0x28) = param_10 + 1" (pointer_expression "*(byte **)(puVar16 + 0x28)" (* "*") (cast_expression "(byte **)(puVar16 + 0x28)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "param_10 + 1" (identifier "param_10") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;" (if "if") (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == param_10 + 1)" (( "(") (binary_expression "*(byte **)(puVar16 + 0xa8) == param_10 + 1" (pointer_expression "*(byte **)(puVar16 + 0xa8)" (* "*") (cast_expression "(byte **)(puVar16 + 0xa8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0xa8)" (( "(") (binary_expression "puVar16 + 0xa8" (identifier "puVar16") (+ "+") (number_literal "0xa8")) () ")")))) (== "==") (binary_expression "param_10 + 1" (identifier "param_10") (+ "+") (number_literal "1"))) () ")")) (goto_statement "goto LAB_0027c4c0;" (goto "goto") (statement_identifier "LAB_0027c4c0") (; ";"))) (expression_statement "bVar7 = param_10[1];" (assignment_expression "bVar7 = param_10[1]" (identifier "bVar7") (= "=") (subscript_expression "param_10[1]" (identifier "param_10") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(uint *)(puVar16 + 0x2c) = (uint)bVar7;" (assignment_expression "*(uint *)(puVar16 + 0x2c) = (uint)bVar7" (pointer_expression "*(uint *)(puVar16 + 0x2c)" (* "*") (cast_expression "(uint *)(puVar16 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x2c)" (( "(") (binary_expression "puVar16 + 0x2c" (identifier "puVar16") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (cast_expression "(uint)bVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar7"))) (; ";")) (expression_statement "cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);" (assignment_expression "cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d)" (identifier "cVar20") (= "=") (pointer_expression "*(char *)((int)piVar8 + bVar7 + 0x11d)" (* "*") (cast_expression "(char *)((int)piVar8 + bVar7 + 0x11d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + bVar7 + 0x11d)" (( "(") (binary_expression "(int)piVar8 + bVar7 + 0x11d" (binary_expression "(int)piVar8 + bVar7" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (identifier "bVar7")) (+ "+") (number_literal "0x11d")) () ")"))))) (; ";")) (expression_statement "puVar16[0x10] = cVar20;" (assignment_expression "puVar16[0x10] = cVar20" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (= "=") (identifier "cVar20")) (; ";")) (expression_statement "uVar12 = 0x25;" (assignment_expression "uVar12 = 0x25" (identifier "uVar12") (= "=") (number_literal "0x25")) (; ";")) (if_statement "if (cVar20 == '\0') {\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }\n        else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }" (if "if") (parenthesized_expression "(cVar20 == '\0')" (( "(") (binary_expression "cVar20 == '\0'" (identifier "cVar20") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          pcVar2 = *(code **)(*piVar8 + 0x20);\n          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }\n          if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }\n          puVar16[0x10] = 0;\n          iVar17 = 0;\n          *(undefined4 *)(puVar16 + 0x3c) = 0;\n          bVar7 = 0;\n        }" ({ "{") (expression_statement "pcVar2 = *(code **)(*piVar8 + 0x20);" (assignment_expression "pcVar2 = *(code **)(*piVar8 + 0x20)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*piVar8 + 0x20)" (* "*") (cast_expression "(code **)(*piVar8 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar8 + 0x20)" (( "(") (binary_expression "*piVar8 + 0x20" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }" (if "if") (parenthesized_expression "(pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c))" (( "(") (binary_expression "pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" (identifier "pcVar2") (!= "!=") (pointer_expression "*(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" (* "*") (cast_expression "(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 0x14) + -0x24c)" (( "(") (binary_expression "*(int *)(puVar16 + 0x14) + -0x24c" (pointer_expression "*(int *)(puVar16 + 0x14)" (* "*") (cast_expression "(int *)(puVar16 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x14)" (( "(") (binary_expression "puVar16 + 0x14" (identifier "puVar16") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "-0x24c")) () ")"))))) () ")")) (compound_statement "{\n            puVar16[0x10] = 0x25;\n            *(undefined4 *)(puVar16 + -8) = 0;\n            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;\n            *(int **)(puVar16 + -0x10) = piVar8;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;\n            bVar7 = (*pcVar2)();\n            uVar12 = puVar16[0x10];\n          }" ({ "{") (expression_statement "puVar16[0x10] = 0x25;" (assignment_expression "puVar16[0x10] = 0x25" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0x25")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = (int)(char)bVar7;" (assignment_expression "*(int *)(puVar16 + -0xc) = (int)(char)bVar7" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (cast_expression "(int)(char)bVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar7")))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c3f8" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27c3f8")) (; ";")) (expression_statement "bVar7 = (*pcVar2)();" (assignment_expression "bVar7 = (*pcVar2)()" (identifier "bVar7") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar12 = puVar16[0x10];" (assignment_expression "uVar12 = puVar16[0x10]" (identifier "uVar12") (= "=") (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (} "}"))) (if_statement "if (bVar7 != 0) {\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }" (if "if") (parenthesized_expression "(bVar7 != 0)" (( "(") (binary_expression "bVar7 != 0" (identifier "bVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            puVar16[0x10] = bVar7;\n            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n            goto LAB_0027bdcc;\n          }" ({ "{") (expression_statement "puVar16[0x10] = bVar7;" (assignment_expression "puVar16[0x10] = bVar7" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (= "=") (identifier "bVar7")) (; ";")) (expression_statement "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;" (assignment_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7" (pointer_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" (* "*") (cast_expression "(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" (( "(") (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d" (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x2c)" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (pointer_expression "*(int *)(puVar16 + 0x2c)" (* "*") (cast_expression "(int *)(puVar16 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x2c)" (( "(") (binary_expression "puVar16 + 0x2c" (identifier "puVar16") (+ "+") (number_literal "0x2c")) () ")"))))) (+ "+") (number_literal "0x11d")) () ")")))) (= "=") (identifier "bVar7")) (; ";")) (goto_statement "goto LAB_0027bdcc;" (goto "goto") (statement_identifier "LAB_0027bdcc") (; ";")) (} "}"))) (expression_statement "puVar16[0x10] = 0;" (assignment_expression "puVar16[0x10] = 0" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x3c) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x3c) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x3c)" (( "(") (binary_expression "puVar16 + 0x3c" (identifier "puVar16") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar7 = 0;" (assignment_expression "bVar7 = 0" (identifier "bVar7") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }" (else "else") (compound_statement "{\nLAB_0027bdcc:\n          bVar7 = puVar16[0x10];\n          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }\n        }" ({ "{") (labeled_statement "LAB_0027bdcc:\n          bVar7 = puVar16[0x10];" (statement_identifier "LAB_0027bdcc") (: ":") (expression_statement "bVar7 = puVar16[0x10];" (assignment_expression "bVar7 = puVar16[0x10]" (identifier "bVar7") (= "=") (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]"))) (; ";"))) (if_statement "if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }\n          else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }" (if "if") (parenthesized_expression "((bVar7 == 0x45) || (bVar7 == 0x4f))" (( "(") (binary_expression "(bVar7 == 0x45) || (bVar7 == 0x4f)" (parenthesized_expression "(bVar7 == 0x45)" (( "(") (binary_expression "bVar7 == 0x45" (identifier "bVar7") (== "==") (number_literal "0x45")) () ")")) (|| "||") (parenthesized_expression "(bVar7 == 0x4f)" (( "(") (binary_expression "bVar7 == 0x4f" (identifier "bVar7") (== "==") (number_literal "0x4f")) () ")"))) () ")")) (compound_statement "{\n            *(byte **)(puVar16 + 0x28) = param_10 + 2;\n            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;\n            bVar5 = param_10[2];\n            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;\n            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);\n            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];\n            if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }\n          }" ({ "{") (expression_statement "*(byte **)(puVar16 + 0x28) = param_10 + 2;" (assignment_expression "*(byte **)(puVar16 + 0x28) = param_10 + 2" (pointer_expression "*(byte **)(puVar16 + 0x28)" (* "*") (cast_expression "(byte **)(puVar16 + 0x28)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x28)" (( "(") (binary_expression "puVar16 + 0x28" (identifier "puVar16") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "param_10 + 2" (identifier "param_10") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;" (if "if") (parenthesized_expression "(*(byte **)(puVar16 + 0xa8) == param_10 + 2)" (( "(") (binary_expression "*(byte **)(puVar16 + 0xa8) == param_10 + 2" (pointer_expression "*(byte **)(puVar16 + 0xa8)" (* "*") (cast_expression "(byte **)(puVar16 + 0xa8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0xa8)" (( "(") (binary_expression "puVar16 + 0xa8" (identifier "puVar16") (+ "+") (number_literal "0xa8")) () ")")))) (== "==") (binary_expression "param_10 + 2" (identifier "param_10") (+ "+") (number_literal "2"))) () ")")) (goto_statement "goto LAB_0027c4c0;" (goto "goto") (statement_identifier "LAB_0027c4c0") (; ";"))) (expression_statement "bVar5 = param_10[2];" (assignment_expression "bVar5 = param_10[2]" (identifier "bVar5") (= "=") (subscript_expression "param_10[2]" (identifier "param_10") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(uint *)(puVar16 + 0x2c) = (uint)bVar5;" (assignment_expression "*(uint *)(puVar16 + 0x2c) = (uint)bVar5" (pointer_expression "*(uint *)(puVar16 + 0x2c)" (* "*") (cast_expression "(uint *)(puVar16 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x2c)" (( "(") (binary_expression "puVar16 + 0x2c" (identifier "puVar16") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (cast_expression "(uint)bVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar5"))) (; ";")) (expression_statement "bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);" (assignment_expression "bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d)" (identifier "bVar7") (= "=") (pointer_expression "*(byte *)((int)piVar8 + bVar5 + 0x11d)" (* "*") (cast_expression "(byte *)((int)piVar8 + bVar5 + 0x11d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + bVar5 + 0x11d)" (( "(") (binary_expression "(int)piVar8 + bVar5 + 0x11d" (binary_expression "(int)piVar8 + bVar5" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (identifier "bVar5")) (+ "+") (number_literal "0x11d")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];" (assignment_expression "*(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10]" (pointer_expression "*(int *)(puVar16 + 0x3c)" (* "*") (cast_expression "(int *)(puVar16 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x3c)" (( "(") (binary_expression "puVar16 + 0x3c" (identifier "puVar16") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (cast_expression "(int)(char)puVar16[0x10]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)puVar16[0x10]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]"))))) (; ";")) (if_statement "if (bVar7 == 0) {\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }\n            else {\n              iVar17 = (int)(char)bVar7;\n            }" (if "if") (parenthesized_expression "(bVar7 == 0)" (( "(") (binary_expression "bVar7 == 0" (identifier "bVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar17 = (int)(char)bVar5;\n              pcVar2 = *(code **)(*piVar8 + 0x20);\n              bVar7 = bVar5;\n              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }\n              if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }\n            }" ({ "{") (expression_statement "iVar17 = (int)(char)bVar5;" (assignment_expression "iVar17 = (int)(char)bVar5" (identifier "iVar17") (= "=") (cast_expression "(int)(char)bVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar5" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar5")))) (; ";")) (expression_statement "pcVar2 = *(code **)(*piVar8 + 0x20);" (assignment_expression "pcVar2 = *(code **)(*piVar8 + 0x20)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*piVar8 + 0x20)" (* "*") (cast_expression "(code **)(*piVar8 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar8 + 0x20)" (( "(") (binary_expression "*piVar8 + 0x20" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "bVar7 = bVar5;" (assignment_expression "bVar7 = bVar5" (identifier "bVar7") (= "=") (identifier "bVar5")) (; ";")) (if_statement "if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }" (if "if") (parenthesized_expression "(pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c))" (( "(") (binary_expression "pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" (identifier "pcVar2") (!= "!=") (pointer_expression "*(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" (* "*") (cast_expression "(code **)(*(int *)(puVar16 + 0x14) + -0x24c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 0x14) + -0x24c)" (( "(") (binary_expression "*(int *)(puVar16 + 0x14) + -0x24c" (pointer_expression "*(int *)(puVar16 + 0x14)" (* "*") (cast_expression "(int *)(puVar16 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x14)" (( "(") (binary_expression "puVar16 + 0x14" (identifier "puVar16") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "-0x24c")) () ")"))))) () ")")) (compound_statement "{\n                puVar16[0x33] = uVar12;\n                *(undefined4 *)(puVar16 + -8) = 0;\n                *(int *)(puVar16 + -0xc) = iVar17;\n                *(int **)(puVar16 + -0x10) = piVar8;\n                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;\n                bVar7 = (*pcVar2)();\n                uVar12 = puVar16[0x33];\n                iVar17 = (int)(char)bVar7;\n              }" ({ "{") (expression_statement "puVar16[0x33] = uVar12;" (assignment_expression "puVar16[0x33] = uVar12" (subscript_expression "puVar16[0x33]" (identifier "puVar16") ([ "[") (number_literal "0x33") (] "]")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -8) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = iVar17;" (assignment_expression "*(int *)(puVar16 + -0xc) = iVar17" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar17")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c4a2" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27c4a2")) (; ";")) (expression_statement "bVar7 = (*pcVar2)();" (assignment_expression "bVar7 = (*pcVar2)()" (identifier "bVar7") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar12 = puVar16[0x33];" (assignment_expression "uVar12 = puVar16[0x33]" (identifier "uVar12") (= "=") (subscript_expression "puVar16[0x33]" (identifier "puVar16") ([ "[") (number_literal "0x33") (] "]"))) (; ";")) (expression_statement "iVar17 = (int)(char)bVar7;" (assignment_expression "iVar17 = (int)(char)bVar7" (identifier "iVar17") (= "=") (cast_expression "(int)(char)bVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar7")))) (; ";")) (} "}"))) (if_statement "if (bVar7 != 0) {\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }" (if "if") (parenthesized_expression "(bVar7 != 0)" (( "(") (binary_expression "bVar7 != 0" (identifier "bVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;\n              }" ({ "{") (expression_statement "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;" (assignment_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7" (pointer_expression "*(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" (* "*") (cast_expression "(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d)" (( "(") (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d" (binary_expression "(int)piVar8 + *(int *)(puVar16 + 0x2c)" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (pointer_expression "*(int *)(puVar16 + 0x2c)" (* "*") (cast_expression "(int *)(puVar16 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x2c)" (( "(") (binary_expression "puVar16 + 0x2c" (identifier "puVar16") (+ "+") (number_literal "0x2c")) () ")"))))) (+ "+") (number_literal "0x11d")) () ")")))) (= "=") (identifier "bVar7")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              iVar17 = (int)(char)bVar7;\n            }" (else "else") (compound_statement "{\n              iVar17 = (int)(char)bVar7;\n            }" ({ "{") (expression_statement "iVar17 = (int)(char)bVar7;" (assignment_expression "iVar17 = (int)(char)bVar7" (identifier "iVar17") (= "=") (cast_expression "(int)(char)bVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar7")))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }" (else "else") (compound_statement "{\n            *(undefined4 *)(puVar16 + 0x3c) = 0;\n            iVar17 = (int)(char)bVar7;\n            puVar16[0x10] = 0;\n          }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + 0x3c) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + 0x3c) = 0" (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x3c)" (( "(") (binary_expression "puVar16 + 0x3c" (identifier "puVar16") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar17 = (int)(char)bVar7;" (assignment_expression "iVar17 = (int)(char)bVar7" (identifier "iVar17") (= "=") (cast_expression "(int)(char)bVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar7")))) (; ";")) (expression_statement "puVar16[0x10] = 0;" (assignment_expression "puVar16[0x10] = 0" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")))) (expression_statement "puVar16[0x33] = uVar12;" (assignment_expression "puVar16[0x33] = uVar12" (subscript_expression "puVar16[0x33]" (identifier "puVar16") ([ "[") (number_literal "0x33") (] "]")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "puVar16[0x2c] = bVar7;" (assignment_expression "puVar16[0x2c] = bVar7" (subscript_expression "puVar16[0x2c]" (identifier "puVar16") ([ "[") (number_literal "0x2c") (] "]")) (= "=") (identifier "bVar7")) (; ";")) (expression_statement "pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);" (assignment_expression "pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(**(int **)(puVar16 + 0x84) + 0x20)" (* "*") (cast_expression "(code **)(**(int **)(puVar16 + 0x84) + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(puVar16 + 0x84) + 0x20)" (( "(") (binary_expression "**(int **)(puVar16 + 0x84) + 0x20" (pointer_expression "**(int **)(puVar16 + 0x84)" (* "*") (pointer_expression "*(int **)(puVar16 + 0x84)" (* "*") (cast_expression "(int **)(puVar16 + 0x84)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x84)" (( "(") (binary_expression "puVar16 + 0x84" (identifier "puVar16") (+ "+") (number_literal "0x84")) () ")"))))) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (pcVar2 == *(code **)(puVar16 + 0x38)) {\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }\n        else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }" (if "if") (parenthesized_expression "(pcVar2 == *(code **)(puVar16 + 0x38))" (( "(") (binary_expression "pcVar2 == *(code **)(puVar16 + 0x38)" (identifier "pcVar2") (== "==") (pointer_expression "*(code **)(puVar16 + 0x38)" (* "*") (cast_expression "(code **)(puVar16 + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x38)" (( "(") (binary_expression "puVar16 + 0x38" (identifier "puVar16") (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (compound_statement "{\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);\n          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;\n          piVar9 = (int *)FUN_00212050();\n          uVar12 = puVar16[0x2c];\n          uVar6 = puVar16[0x33];\n          **(undefined4 **)(puVar16 + 0x9c) = 0;\n          if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }\n          puVar16[0x5c] = uVar6;\n          if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }\n          *(int **)(puVar16 + 0x18) = param_3;\n          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;\n          FUN_0027a830();\n          iVar17 = *(int *)(puVar16 + 0x48);\n          param_3 = *(int **)(puVar16 + 0x44);\n          *(int *)(puVar16 + 0x18) = iVar17;\n          *(int *)(puVar16 + 8) = iVar17;\n          *(int **)(puVar16 + 0x14) = param_3;\n          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;\n          cVar20 = iVar17 == -1;\n          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }\n          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }\n          if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }\n        }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x40)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x40)" (( "(") (binary_expression "puVar16 + 0x40" (identifier "puVar16") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27be21;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27be21" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27be21")) (; ";")) (expression_statement "piVar9 = (int *)FUN_00212050();" (assignment_expression "piVar9 = (int *)FUN_00212050()" (identifier "piVar9") (= "=") (cast_expression "(int *)FUN_00212050()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00212050()" (identifier "FUN_00212050") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "uVar12 = puVar16[0x2c];" (assignment_expression "uVar12 = puVar16[0x2c]" (identifier "uVar12") (= "=") (subscript_expression "puVar16[0x2c]" (identifier "puVar16") ([ "[") (number_literal "0x2c") (] "]"))) (; ";")) (expression_statement "uVar6 = puVar16[0x33];" (assignment_expression "uVar6 = puVar16[0x33]" (identifier "uVar6") (= "=") (subscript_expression "puVar16[0x33]" (identifier "puVar16") ([ "[") (number_literal "0x33") (] "]"))) (; ";")) (expression_statement "**(undefined4 **)(puVar16 + 0x9c) = 0;" (assignment_expression "**(undefined4 **)(puVar16 + 0x9c) = 0" (pointer_expression "**(undefined4 **)(puVar16 + 0x9c)" (* "*") (pointer_expression "*(undefined4 **)(puVar16 + 0x9c)" (* "*") (cast_expression "(undefined4 **)(puVar16 + 0x9c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x9c)" (( "(") (binary_expression "puVar16 + 0x9c" (identifier "puVar16") (+ "+") (number_literal "0x9c")) () ")"))))) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((char)piVar9[7] == '\0') {\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }\n          else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }" (if "if") (parenthesized_expression "((char)piVar9[7] == '\0')" (( "(") (binary_expression "(char)piVar9[7] == '\0'" (cast_expression "(char)piVar9[7]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar9[7]" (identifier "piVar9") ([ "[") (number_literal "7") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            puVar16[0x33] = uVar6;\n            puVar16[0x2c] = uVar12;\n            *(int **)(puVar16 + -0x10) = piVar9;\n            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;\n            FUN_00242f30();\n            uVar12 = puVar16[0x2c];\n            uVar6 = puVar16[0x33];\n            pcVar2 = *(code **)(*piVar9 + 0x18);\n            if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }\n          }" ({ "{") (expression_statement "puVar16[0x33] = uVar6;" (assignment_expression "puVar16[0x33] = uVar6" (subscript_expression "puVar16[0x33]" (identifier "puVar16") ([ "[") (number_literal "0x33") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar16[0x2c] = uVar12;" (assignment_expression "puVar16[0x2c] = uVar12" (subscript_expression "puVar16[0x2c]" (identifier "puVar16") ([ "[") (number_literal "0x2c") (] "]")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = piVar9;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar9" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c1b5" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27c1b5")) (; ";")) (expression_statement "FUN_00242f30();" (call_expression "FUN_00242f30()" (identifier "FUN_00242f30") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar12 = puVar16[0x2c];" (assignment_expression "uVar12 = puVar16[0x2c]" (identifier "uVar12") (= "=") (subscript_expression "puVar16[0x2c]" (identifier "puVar16") ([ "[") (number_literal "0x2c") (] "]"))) (; ";")) (expression_statement "uVar6 = puVar16[0x33];" (assignment_expression "uVar6 = puVar16[0x33]" (identifier "uVar6") (= "=") (subscript_expression "puVar16[0x33]" (identifier "puVar16") ([ "[") (number_literal "0x33") (] "]"))) (; ";")) (expression_statement "pcVar2 = *(code **)(*piVar9 + 0x18);" (assignment_expression "pcVar2 = *(code **)(*piVar9 + 0x18)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*piVar9 + 0x18)" (* "*") (cast_expression "(code **)(*piVar9 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar9 + 0x18)" (( "(") (binary_expression "*piVar9 + 0x18" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (pcVar2 != *(code **)(puVar16 + 0x44)) {\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }" (if "if") (parenthesized_expression "(pcVar2 != *(code **)(puVar16 + 0x44))" (( "(") (binary_expression "pcVar2 != *(code **)(puVar16 + 0x44)" (identifier "pcVar2") (!= "!=") (pointer_expression "*(code **)(puVar16 + 0x44)" (* "*") (cast_expression "(code **)(puVar16 + 0x44)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x44)" (( "(") (binary_expression "puVar16 + 0x44" (identifier "puVar16") (+ "+") (number_literal "0x44")) () ")"))))) () ")")) (compound_statement "{\n              *(undefined4 *)(puVar16 + -0xc) = 0x25;\n              *(int **)(puVar16 + -0x10) = piVar9;\n              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;\n              uVar6 = (*pcVar2)();\n              uVar12 = puVar16[0x2c];\n            }" ({ "{") (expression_statement "*(undefined4 *)(puVar16 + -0xc) = 0x25;" (assignment_expression "*(undefined4 *)(puVar16 + -0xc) = 0x25" (pointer_expression "*(undefined4 *)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (number_literal "0x25")) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = piVar9;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar9" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c1da;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c1da" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27c1da")) (; ";")) (expression_statement "uVar6 = (*pcVar2)();" (assignment_expression "uVar6 = (*pcVar2)()" (identifier "uVar6") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar12 = puVar16[0x2c];" (assignment_expression "uVar12 = puVar16[0x2c]" (identifier "uVar12") (= "=") (subscript_expression "puVar16[0x2c]" (identifier "puVar16") ([ "[") (number_literal "0x2c") (] "]"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }" (else "else") (compound_statement "{\n            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);\n          }" ({ "{") (expression_statement "uVar6 = *(undefined1 *)((int)piVar9 + 0x42);" (assignment_expression "uVar6 = *(undefined1 *)((int)piVar9 + 0x42)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined1 *)((int)piVar9 + 0x42)" (* "*") (cast_expression "(undefined1 *)((int)piVar9 + 0x42)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar9 + 0x42)" (( "(") (binary_expression "(int)piVar9 + 0x42" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (+ "+") (number_literal "0x42")) () ")"))))) (; ";")) (} "}")))) (expression_statement "puVar16[0x5c] = uVar6;" (assignment_expression "puVar16[0x5c] = uVar6" (subscript_expression "puVar16[0x5c]" (identifier "puVar16") ([ "[") (number_literal "0x5c") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (if_statement "if (puVar16[0x10] == '\0') {\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }\n          else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }" (if "if") (parenthesized_expression "(puVar16[0x10] == '\0')" (( "(") (binary_expression "puVar16[0x10] == '\0'" (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            puVar16[0x5d] = uVar12;\n            puVar16[0x5e] = 0;\n          }" ({ "{") (expression_statement "puVar16[0x5d] = uVar12;" (assignment_expression "puVar16[0x5d] = uVar12" (subscript_expression "puVar16[0x5d]" (identifier "puVar16") ([ "[") (number_literal "0x5d") (] "]")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "puVar16[0x5e] = 0;" (assignment_expression "puVar16[0x5e] = 0" (subscript_expression "puVar16[0x5e]" (identifier "puVar16") ([ "[") (number_literal "0x5e") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }" (else "else") (compound_statement "{\n            puVar16[0x5e] = uVar12;\n            puVar16[0x5f] = 0;\n            puVar16[0x5d] = puVar16[0x10];\n          }" ({ "{") (expression_statement "puVar16[0x5e] = uVar12;" (assignment_expression "puVar16[0x5e] = uVar12" (subscript_expression "puVar16[0x5e]" (identifier "puVar16") ([ "[") (number_literal "0x5e") (] "]")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "puVar16[0x5f] = 0;" (assignment_expression "puVar16[0x5f] = 0" (subscript_expression "puVar16[0x5f]" (identifier "puVar16") ([ "[") (number_literal "0x5f") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar16[0x5d] = puVar16[0x10];" (assignment_expression "puVar16[0x5d] = puVar16[0x10]" (subscript_expression "puVar16[0x5d]" (identifier "puVar16") ([ "[") (number_literal "0x5d") (] "]")) (= "=") (subscript_expression "puVar16[0x10]" (identifier "puVar16") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (} "}")))) (expression_statement "*(int **)(puVar16 + 0x18) = param_3;" (assignment_expression "*(int **)(puVar16 + 0x18) = param_3" (pointer_expression "*(int **)(puVar16 + 0x18)" (* "*") (cast_expression "(int **)(puVar16 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x18)" (( "(") (binary_expression "puVar16 + 0x18" (identifier "puVar16") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);" (assignment_expression "*(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc)" (pointer_expression "*(undefined4 *)(puVar16 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x1c)" (( "(") (binary_expression "puVar16 + 0x1c" (identifier "puVar16") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);" (assignment_expression "*(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8)" (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x20)" (( "(") (binary_expression "puVar16 + 0x20" (identifier "puVar16") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);" (assignment_expression "*(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34)" (pointer_expression "*(undefined4 *)(puVar16 + 0x24)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x24)" (( "(") (binary_expression "puVar16 + 0x24" (identifier "puVar16") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x34)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x34)" (( "(") (binary_expression "puVar16 + 0x34" (identifier "puVar16") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "*(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;" (assignment_expression "*(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c" (pointer_expression "*(undefined1 **)(puVar16 + -0xc)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -0xc)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (binary_expression "puVar16 + 0x5c" (identifier "puVar16") (+ "+") (number_literal "0x5c"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0xa0)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0xa0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xa0)" (( "(") (binary_expression "puVar16 + 0xa0" (identifier "puVar16") (+ "+") (number_literal "0xa0")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x9c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x9c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x9c)" (( "(") (binary_expression "puVar16 + 0x9c" (identifier "puVar16") (+ "+") (number_literal "0x9c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x18)" (( "(") (binary_expression "puVar16 + -0x18" (identifier "puVar16") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x98)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x98)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x98)" (( "(") (binary_expression "puVar16 + 0x98" (identifier "puVar16") (+ "+") (number_literal "0x98")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x1c)" (( "(") (binary_expression "puVar16 + -0x1c" (identifier "puVar16") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x24)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x24)" (( "(") (binary_expression "puVar16 + 0x24" (identifier "puVar16") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x20)" (( "(") (binary_expression "puVar16 + -0x20" (identifier "puVar16") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x20)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x20)" (( "(") (binary_expression "puVar16 + 0x20" (identifier "puVar16") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x24)" (( "(") (binary_expression "puVar16 + -0x24" (identifier "puVar16") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x1c)" (( "(") (binary_expression "puVar16 + 0x1c" (identifier "puVar16") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18)" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x28)" (( "(") (binary_expression "puVar16 + -0x28" (identifier "puVar16") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x18)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x18)" (( "(") (binary_expression "puVar16 + 0x18" (identifier "puVar16") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x2c)" (( "(") (binary_expression "puVar16 + -0x2c" (identifier "puVar16") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x84)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x84)" (( "(") (binary_expression "puVar16 + 0x84" (identifier "puVar16") (+ "+") (number_literal "0x84")) () ")"))))) (; ";")) (expression_statement "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;" (assignment_expression "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48" (pointer_expression "*(undefined1 **)(puVar16 + -0x30)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -0x30)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x30)" (( "(") (binary_expression "puVar16 + -0x30" (identifier "puVar16") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (binary_expression "puVar16 + 0x48" (identifier "puVar16") (+ "+") (number_literal "0x48"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x34) = 0x27bec1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = 0x27bec1" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x34)" (( "(") (binary_expression "puVar16 + -0x34" (identifier "puVar16") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (number_literal "0x27bec1")) (; ";")) (expression_statement "FUN_0027a830();" (call_expression "FUN_0027a830()" (identifier "FUN_0027a830") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar17 = *(int *)(puVar16 + 0x48);" (assignment_expression "iVar17 = *(int *)(puVar16 + 0x48)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(puVar16 + 0x48)" (* "*") (cast_expression "(int *)(puVar16 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x48)" (( "(") (binary_expression "puVar16 + 0x48" (identifier "puVar16") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "param_3 = *(int **)(puVar16 + 0x44);" (assignment_expression "param_3 = *(int **)(puVar16 + 0x44)" (identifier "param_3") (= "=") (pointer_expression "*(int **)(puVar16 + 0x44)" (* "*") (cast_expression "(int **)(puVar16 + 0x44)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x44)" (( "(") (binary_expression "puVar16 + 0x44" (identifier "puVar16") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + 0x18) = iVar17;" (assignment_expression "*(int *)(puVar16 + 0x18) = iVar17" (pointer_expression "*(int *)(puVar16 + 0x18)" (* "*") (cast_expression "(int *)(puVar16 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x18)" (( "(") (binary_expression "puVar16 + 0x18" (identifier "puVar16") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "iVar17")) (; ";")) (expression_statement "*(int *)(puVar16 + 8) = iVar17;" (assignment_expression "*(int *)(puVar16 + 8) = iVar17" (pointer_expression "*(int *)(puVar16 + 8)" (* "*") (cast_expression "(int *)(puVar16 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar17")) (; ";")) (expression_statement "*(int **)(puVar16 + 0x14) = param_3;" (assignment_expression "*(int **)(puVar16 + 0x14) = param_3" (pointer_expression "*(int **)(puVar16 + 0x14)" (* "*") (cast_expression "(int **)(puVar16 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x14)" (( "(") (binary_expression "puVar16 + 0x14" (identifier "puVar16") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "bVar13 = param_3 != (int *)0x0 && iVar17 == -1;" (assignment_expression "bVar13 = param_3 != (int *)0x0 && iVar17 == -1" (identifier "bVar13") (= "=") (binary_expression "param_3 != (int *)0x0 && iVar17 == -1" (binary_expression "param_3 != (int *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (binary_expression "iVar17 == -1" (identifier "iVar17") (== "==") (number_literal "-1")))) (; ";")) (expression_statement "cVar20 = iVar17 == -1;" (assignment_expression "cVar20 = iVar17 == -1" (identifier "cVar20") (= "=") (binary_expression "iVar17 == -1" (identifier "iVar17") (== "==") (number_literal "-1"))) (; ";")) (if_statement "if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }" (if "if") (parenthesized_expression "((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2]))" (( "(") (binary_expression "(bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])" (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (&& "&&") (parenthesized_expression "(cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])" (( "(") (comma_expression "cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2]" (assignment_expression "cVar20 = '\0'" (identifier "cVar20") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (, ",") (binary_expression "(uint)param_3[3] <= (uint)param_3[2]" (cast_expression "(uint)param_3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(uint)param_3[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))))) () ")"))) () ")")) (compound_statement "{\n            puVar16[0xc] = bVar13;\n            iVar17 = *param_3;\n            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);\n            pcVar2 = *(code **)(iVar17 + 0x24);\n            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;\n            iVar17 = (*pcVar2)();\n            if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }\n          }" ({ "{") (expression_statement "puVar16[0xc] = bVar13;" (assignment_expression "puVar16[0xc] = bVar13" (subscript_expression "puVar16[0xc]" (identifier "puVar16") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "iVar17 = *param_3;" (assignment_expression "iVar17 = *param_3" (identifier "iVar17") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x14)" (( "(") (binary_expression "puVar16 + 0x14" (identifier "puVar16") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 0x24)" (* "*") (cast_expression "(code **)(iVar17 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 0x24)" (( "(") (binary_expression "iVar17 + 0x24" (identifier "iVar17") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = 0x27c37e;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = 0x27c37e" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x18)" (( "(") (binary_expression "puVar16 + -0x18" (identifier "puVar16") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x27c37e")) (; ";")) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" (identifier "iVar17") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar17 == -1) {\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }" (if "if") (parenthesized_expression "(iVar17 == -1)" (( "(") (binary_expression "iVar17 == -1" (identifier "iVar17") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              param_3 = (int *)0x0;\n              cVar20 = puVar16[0xc];\n            }" ({ "{") (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" (identifier "param_3") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "cVar20 = puVar16[0xc];" (assignment_expression "cVar20 = puVar16[0xc]" (identifier "cVar20") (= "=") (subscript_expression "puVar16[0xc]" (identifier "puVar16") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {\n            cVar21 = puVar16[0x2e];\n          }\n          else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }" (if "if") (parenthesized_expression "((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0'))" (( "(") (binary_expression "(*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')" (parenthesized_expression "(*(int *)(puVar16 + 4) == 0)" (( "(") (binary_expression "*(int *)(puVar16 + 4) == 0" (pointer_expression "*(int *)(puVar16 + 4)" (* "*") (cast_expression "(int *)(puVar16 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 4)" (( "(") (binary_expression "puVar16 + 4" (identifier "puVar16") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(puVar16[0x2e] == '\0')" (( "(") (binary_expression "puVar16[0x2e] == '\0'" (subscript_expression "puVar16[0x2e]" (identifier "puVar16") ([ "[") (number_literal "0x2e") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            cVar21 = puVar16[0x2e];\n          }" ({ "{") (expression_statement "cVar21 = puVar16[0x2e];" (assignment_expression "cVar21 = puVar16[0x2e]" (identifier "cVar21") (= "=") (subscript_expression "puVar16[0x2e]" (identifier "puVar16") ([ "[") (number_literal "0x2e") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }" (else "else") (compound_statement "{\n            cVar21 = '\0';\n            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }\n          }" ({ "{") (expression_statement "cVar21 = '\0';" (assignment_expression "cVar21 = '\0'" (identifier "cVar21") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }" (if "if") (parenthesized_expression "(*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8))" (( "(") (binary_expression "*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)" (pointer_expression "*(uint *)(*(int *)(puVar16 + 4) + 0xc)" (* "*") (cast_expression "(uint *)(*(int *)(puVar16 + 4) + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 4) + 0xc)" (( "(") (binary_expression "*(int *)(puVar16 + 4) + 0xc" (pointer_expression "*(int *)(puVar16 + 4)" (* "*") (cast_expression "(int *)(puVar16 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 4)" (( "(") (binary_expression "puVar16 + 4" (identifier "puVar16") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0xc")) () ")")))) (<= "<=") (pointer_expression "*(uint *)(*(int *)(puVar16 + 4) + 8)" (* "*") (cast_expression "(uint *)(*(int *)(puVar16 + 4) + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 4) + 8)" (( "(") (binary_expression "*(int *)(puVar16 + 4) + 8" (pointer_expression "*(int *)(puVar16 + 4)" (* "*") (cast_expression "(int *)(puVar16 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 4)" (( "(") (binary_expression "puVar16 + 4" (identifier "puVar16") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n              iVar17 = **(int **)(puVar16 + 4);\n              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);\n              pcVar2 = *(code **)(iVar17 + 0x24);\n              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;\n              iVar17 = (*pcVar2)();\n              cVar21 = iVar17 == -1;\n            }" ({ "{") (expression_statement "iVar17 = **(int **)(puVar16 + 4);" (assignment_expression "iVar17 = **(int **)(puVar16 + 4)" (identifier "iVar17") (= "=") (pointer_expression "**(int **)(puVar16 + 4)" (* "*") (pointer_expression "*(int **)(puVar16 + 4)" (* "*") (cast_expression "(int **)(puVar16 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 4)" (( "(") (binary_expression "puVar16 + 4" (identifier "puVar16") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);" (assignment_expression "*(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4)" (pointer_expression "*(int **)(puVar16 + -0x14)" (* "*") (cast_expression "(int **)(puVar16 + -0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "*(int **)(puVar16 + 4)" (* "*") (cast_expression "(int **)(puVar16 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 4)" (( "(") (binary_expression "puVar16 + 4" (identifier "puVar16") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 0x24)" (* "*") (cast_expression "(code **)(iVar17 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 0x24)" (( "(") (binary_expression "iVar17 + 0x24" (identifier "iVar17") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = 0x27c34f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = 0x27c34f" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x18)" (( "(") (binary_expression "puVar16 + -0x18" (identifier "puVar16") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x27c34f")) (; ";")) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" (identifier "iVar17") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "cVar21 = iVar17 == -1;" (assignment_expression "cVar21 = iVar17 == -1" (identifier "cVar21") (= "=") (binary_expression "iVar17 == -1" (identifier "iVar17") (== "==") (number_literal "-1"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (cVar21 == cVar20) {\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }" (if "if") (parenthesized_expression "(cVar21 == cVar20)" (( "(") (binary_expression "cVar21 == cVar20" (identifier "cVar21") (== "==") (identifier "cVar20")) () ")")) (compound_statement "{\n            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;\n          }" ({ "{") (expression_statement "**(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;" (assignment_expression "**(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2" (pointer_expression "**(uint **)(puVar16 + 0x98)" (* "*") (pointer_expression "*(uint **)(puVar16 + 0x98)" (* "*") (cast_expression "(uint **)(puVar16 + 0x98)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x98)" (( "(") (binary_expression "puVar16 + 0x98" (identifier "puVar16") (+ "+") (number_literal "0x98")) () ")"))))) (= "=") (binary_expression "**(uint **)(puVar16 + 0x98) | 2" (pointer_expression "**(uint **)(puVar16 + 0x98)" (* "*") (pointer_expression "*(uint **)(puVar16 + 0x98)" (* "*") (cast_expression "(uint **)(puVar16 + 0x98)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x98)" (( "(") (binary_expression "puVar16 + 0x98" (identifier "puVar16") (+ "+") (number_literal "0x98")) () ")"))))) (| "|") (number_literal "2"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }" (else "else") (compound_statement "{\n          *(int **)(puVar16 + 0x88) = param_3;\n          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);\n          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);\n          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);\n          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);\n          *(int *)(puVar16 + -0xc) = iVar17;\n          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);\n          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);\n          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);\n          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);\n          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);\n          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);\n          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);\n          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);\n          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;\n          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;\n          (*pcVar2)();\n          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);\n          param_3 = *(int **)(puVar16 + 0x84);\n          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);\n          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);\n        }" ({ "{") (expression_statement "*(int **)(puVar16 + 0x88) = param_3;" (assignment_expression "*(int **)(puVar16 + 0x88) = param_3" (pointer_expression "*(int **)(puVar16 + 0x88)" (* "*") (cast_expression "(int **)(puVar16 + 0x88)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x88)" (( "(") (binary_expression "puVar16 + 0x88" (identifier "puVar16") (+ "+") (number_literal "0x88")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);" (assignment_expression "*(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc)" (pointer_expression "*(undefined4 *)(puVar16 + 0x8c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x8c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x8c)" (( "(") (binary_expression "puVar16 + 0x8c" (identifier "puVar16") (+ "+") (number_literal "0x8c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);" (assignment_expression "*(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34)" (pointer_expression "*(undefined4 *)(puVar16 + 0x94)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x94)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x94)" (( "(") (binary_expression "puVar16 + 0x94" (identifier "puVar16") (+ "+") (number_literal "0x94")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x34)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x34)" (( "(") (binary_expression "puVar16 + 0x34" (identifier "puVar16") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);" (assignment_expression "*(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8)" (pointer_expression "*(undefined4 *)(puVar16 + 0x90)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x90)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x90)" (( "(") (binary_expression "puVar16 + 0x90" (identifier "puVar16") (+ "+") (number_literal "0x90")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);" (assignment_expression "*(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c)" (pointer_expression "*(undefined4 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x3c)" (( "(") (binary_expression "puVar16 + 0x3c" (identifier "puVar16") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar16 + -0xc) = iVar17;" (assignment_expression "*(int *)(puVar16 + -0xc) = iVar17" (pointer_expression "*(int *)(puVar16 + -0xc)" (* "*") (cast_expression "(int *)(puVar16 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0xc)" (( "(") (binary_expression "puVar16 + -0xc" (identifier "puVar16") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar17")) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0xa0)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0xa0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xa0)" (( "(") (binary_expression "puVar16 + 0xa0" (identifier "puVar16") (+ "+") (number_literal "0xa0")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x9c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x9c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x9c)" (( "(") (binary_expression "puVar16 + 0x9c" (identifier "puVar16") (+ "+") (number_literal "0x9c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98)" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x18)" (( "(") (binary_expression "puVar16 + -0x18" (identifier "puVar16") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x98)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x98)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x98)" (( "(") (binary_expression "puVar16 + 0x98" (identifier "puVar16") (+ "+") (number_literal "0x98")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);" (assignment_expression "*(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94)" (pointer_expression "*(undefined4 *)(puVar16 + -0x1c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x1c)" (( "(") (binary_expression "puVar16 + -0x1c" (identifier "puVar16") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x94)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x94)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x94)" (( "(") (binary_expression "puVar16 + 0x94" (identifier "puVar16") (+ "+") (number_literal "0x94")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);" (assignment_expression "*(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90)" (pointer_expression "*(undefined4 *)(puVar16 + -0x20)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x20)" (( "(") (binary_expression "puVar16 + -0x20" (identifier "puVar16") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x90)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x90)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x90)" (( "(") (binary_expression "puVar16 + 0x90" (identifier "puVar16") (+ "+") (number_literal "0x90")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c)" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x24)" (( "(") (binary_expression "puVar16 + -0x24" (identifier "puVar16") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x8c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x8c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x8c)" (( "(") (binary_expression "puVar16 + 0x8c" (identifier "puVar16") (+ "+") (number_literal "0x8c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);" (assignment_expression "*(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88)" (pointer_expression "*(undefined4 *)(puVar16 + -0x28)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x28)" (( "(") (binary_expression "puVar16 + -0x28" (identifier "puVar16") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x88)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x88)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x88)" (( "(") (binary_expression "puVar16 + 0x88" (identifier "puVar16") (+ "+") (number_literal "0x88")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);" (assignment_expression "*(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84)" (pointer_expression "*(undefined4 *)(puVar16 + -0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x2c)" (( "(") (binary_expression "puVar16 + -0x2c" (identifier "puVar16") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x84)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x84)" (( "(") (binary_expression "puVar16 + 0x84" (identifier "puVar16") (+ "+") (number_literal "0x84")) () ")"))))) (; ";")) (expression_statement "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;" (assignment_expression "*(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48" (pointer_expression "*(undefined1 **)(puVar16 + -0x30)" (* "*") (cast_expression "(undefined1 **)(puVar16 + -0x30)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x30)" (( "(") (binary_expression "puVar16 + -0x30" (identifier "puVar16") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (binary_expression "puVar16 + 0x48" (identifier "puVar16") (+ "+") (number_literal "0x48"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x34) = 0x27c28f;" (assignment_expression "*(undefined4 *)(puVar16 + -0x34) = 0x27c28f" (pointer_expression "*(undefined4 *)(puVar16 + -0x34)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x34)" (( "(") (binary_expression "puVar16 + -0x34" (identifier "puVar16") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (number_literal "0x27c28f")) (; ";")) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);" (assignment_expression "*(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44)" (pointer_expression "*(undefined4 *)(puVar16 + 0x84)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x84)" (( "(") (binary_expression "puVar16 + 0x84" (identifier "puVar16") (+ "+") (number_literal "0x84")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x44)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x44)" (( "(") (binary_expression "puVar16 + 0x44" (identifier "puVar16") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "param_3 = *(int **)(puVar16 + 0x84);" (assignment_expression "param_3 = *(int **)(puVar16 + 0x84)" (identifier "param_3") (= "=") (pointer_expression "*(int **)(puVar16 + 0x84)" (* "*") (cast_expression "(int **)(puVar16 + 0x84)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x84)" (( "(") (binary_expression "puVar16 + 0x84" (identifier "puVar16") (+ "+") (number_literal "0x84")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);" (assignment_expression "*(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48)" (pointer_expression "*(undefined4 *)(puVar16 + 0x88)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x88)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x88)" (( "(") (binary_expression "puVar16 + 0x88" (identifier "puVar16") (+ "+") (number_literal "0x88")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x48)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x48)" (( "(") (binary_expression "puVar16 + 0x48" (identifier "puVar16") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);" (assignment_expression "*(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88)" (pointer_expression "*(undefined4 *)(puVar16 + 8)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar16 + 0x88)" (* "*") (cast_expression "(undefined4 *)(puVar16 + 0x88)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x88)" (( "(") (binary_expression "puVar16 + 0x88" (identifier "puVar16") (+ "+") (number_literal "0x88")) () ")"))))) (; ";")) (} "}")))) (expression_statement "puVar15 = puVar16 + -4;" (assignment_expression "puVar15 = puVar16 + -4" (identifier "puVar15") (= "=") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);" (assignment_expression "param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1)" (identifier "param_10") (= "=") (cast_expression "(byte *)(*(int *)(puVar16 + 0x24) + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 0x24) + 1)" (( "(") (binary_expression "*(int *)(puVar16 + 0x24) + 1" (pointer_expression "*(int *)(puVar16 + 0x24)" (* "*") (cast_expression "(int *)(puVar16 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x24)" (( "(") (binary_expression "puVar16 + 0x24" (identifier "puVar16") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "puVar1 = (undefined4 *)(puVar16 + 0xa4);" (assignment_expression "puVar1 = (undefined4 *)(puVar16 + 0xa4)" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)(puVar16 + 0xa4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xa4)" (( "(") (binary_expression "puVar16 + 0xa4" (identifier "puVar16") (+ "+") (number_literal "0xa4")) () ")")))) (; ";")) (expression_statement "puVar16 = puVar16 + -4;" (assignment_expression "puVar16 = puVar16 + -4" (identifier "puVar16") (= "=") (binary_expression "puVar16 + -4" (identifier "puVar16") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "puVar4 = puVar15;" (assignment_expression "puVar4 = puVar15" (identifier "puVar4") (= "=") (identifier "puVar15")) (; ";")) (if_statement "if ((byte *)*puVar1 == param_10) break;" (if "if") (parenthesized_expression "((byte *)*puVar1 == param_10)" (( "(") (binary_expression "(byte *)*puVar1 == param_10" (cast_expression "(byte *)*puVar1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (== "==") (identifier "param_10")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")))) (expression_statement "puVar16 = puVar4;" (assignment_expression "puVar16 = puVar4" (identifier "puVar16") (= "=") (identifier "puVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(**(int **)(puVar16 + 0x9c) == 0)" (( "(") (binary_expression "**(int **)(puVar16 + 0x9c) == 0" (pointer_expression "**(int **)(puVar16 + 0x9c)" (* "*") (pointer_expression "*(int **)(puVar16 + 0x9c)" (* "*") (cast_expression "(int **)(puVar16 + 0x9c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x9c)" (( "(") (binary_expression "puVar16 + 0x9c" (identifier "puVar16") (+ "+") (number_literal "0x9c")) () ")"))))) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "piVar8 = *(int **)(puVar16 + 0x80);" (assignment_expression "piVar8 = *(int **)(puVar16 + 0x80)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(puVar16 + 0x80)" (* "*") (cast_expression "(int **)(puVar16 + 0x80)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x80)" (( "(") (binary_expression "puVar16 + 0x80" (identifier "puVar16") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (expression_statement "iVar17 = *(int *)(puVar16 + 0xc);" (assignment_expression "iVar17 = *(int *)(puVar16 + 0xc)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(puVar16 + 0xc)" (* "*") (cast_expression "(int *)(puVar16 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xc)" (( "(") (binary_expression "puVar16 + 0xc" (identifier "puVar16") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*piVar8 = (int)param_3;" (assignment_expression "*piVar8 = (int)param_3" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))) (; ";")) (expression_statement "piVar8[1] = iVar17;" (assignment_expression "piVar8[1] = iVar17" (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar17")) (; ";")) (return_statement "return;" (return "return") (; ";")) (labeled_statement "LAB_0027c2c0:\n  puVar16[0x28] = cVar20;" (statement_identifier "LAB_0027c2c0") (: ":") (expression_statement "puVar16[0x28] = cVar20;" (assignment_expression "puVar16[0x28] = cVar20" (subscript_expression "puVar16[0x28]" (identifier "puVar16") ([ "[") (number_literal "0x28") (] "]")) (= "=") (identifier "cVar20")) (; ";"))) (expression_statement "puVar16[0xc] = bVar7;" (assignment_expression "puVar16[0xc] = bVar7" (subscript_expression "puVar16[0xc]" (identifier "puVar16") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "bVar7")) (; ";")) (expression_statement "piVar8 = *(int **)(puVar16 + 8);" (assignment_expression "piVar8 = *(int **)(puVar16 + 8)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(puVar16 + 8)" (* "*") (cast_expression "(int **)(puVar16 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar17 = *piVar8;" (assignment_expression "iVar17 = *piVar8" (identifier "iVar17") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "*(int **)(puVar16 + -0x10) = piVar8;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar8" (pointer_expression "*(int **)(puVar16 + -0x10)" (* "*") (cast_expression "(int **)(puVar16 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + -0x10)" (( "(") (binary_expression "puVar16 + -0x10" (identifier "puVar16") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (expression_statement "pcVar2 = *(code **)(iVar17 + 0x24);" (assignment_expression "pcVar2 = *(code **)(iVar17 + 0x24)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(iVar17 + 0x24)" (* "*") (cast_expression "(code **)(iVar17 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar17 + 0x24)" (( "(") (binary_expression "iVar17 + 0x24" (identifier "iVar17") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x27c2d5" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -0x14)" (( "(") (binary_expression "puVar16 + -0x14" (identifier "puVar16") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x27c2d5")) (; ";")) (expression_statement "iVar17 = (*pcVar2)();" (assignment_expression "iVar17 = (*pcVar2)()" (identifier "iVar17") (= "=") (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "cVar21 = puVar16[0xc];" (assignment_expression "cVar21 = puVar16[0xc]" (identifier "cVar21") (= "=") (subscript_expression "puVar16[0xc]" (identifier "puVar16") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "piVar9 = (int *)0x0;" (assignment_expression "piVar9 = (int *)0x0" (identifier "piVar9") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar17 != -1) {\n    cVar21 = '\0';\n    piVar9 = piVar8;\n  }" (if "if") (parenthesized_expression "(iVar17 != -1)" (( "(") (binary_expression "iVar17 != -1" (identifier "iVar17") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n    cVar21 = '\0';\n    piVar9 = piVar8;\n  }" ({ "{") (expression_statement "cVar21 = '\0';" (assignment_expression "cVar21 = '\0'" (identifier "cVar21") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "piVar9 = piVar8;" (assignment_expression "piVar9 = piVar8" (identifier "piVar9") (= "=") (identifier "piVar8")) (; ";")) (} "}"))) (expression_statement "cVar20 = puVar16[0x28];" (assignment_expression "cVar20 = puVar16[0x28]" (identifier "cVar20") (= "=") (subscript_expression "puVar16[0x28]" (identifier "puVar16") ([ "[") (number_literal "0x28") (] "]"))) (; ";")) (expression_statement "*(int **)(puVar16 + 8) = piVar9;" (assignment_expression "*(int **)(puVar16 + 8) = piVar9" (pointer_expression "*(int **)(puVar16 + 8)" (* "*") (cast_expression "(int **)(puVar16 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 8)" (( "(") (binary_expression "puVar16 + 8" (identifier "puVar16") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (goto_statement "goto LAB_0027bfb6;" (goto "goto") (statement_identifier "LAB_0027bfb6") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> >
   >::get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char,
   std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, tm*, char const*, char const*)
   const */

void var_3::time_get<char,var_3::istreambuf_iterator<char,var_3::char_traits<char>>>::get
               (type_8 param_1,type_8 param_2,int *var_10,type_8 param_4,
               type_8 param_5,int param_6,int var_1,type_8 *param_8,type_8 param_9,
               type_2 *var_5,type_2 *var_6)

{
  type_5 uVar1;
  type_1 *var_14;
  int *piVar3;
  int *piVar4;
  type_2 var_13;
  type_2 var_24;
  type_2 *var_15;
  type_2 *var_16;
  type_3 *var_22;
  type_4 var_21;
  int var_23;
  type_5 uVar12;
  type_3 var_18;
  bool var_19;
  bool bVar15;
  type_5 *var_9;
  int var_11;
  type_4 var_17;
  char var_20;
  char var_12;
  int aiStackY_b0 [9];
  type_5 auStack_7c [8];
  int local_74;
  type_4 local_70;
  type_2 local_6c [4];
  type_6 **var_8;
  int local_64 [4];
  type_3 local_54 [4];
  type_2 local_50 [6];
  bool local_4a;
  type_2 local_49;
  int var_7;
  type_6 **local_44;
  int local_40;
  type_7 *local_3c;
  type_6 **local_38;
  int local_34 [5];
  type_2 local_20 [16];
  
  var_8 = &_GLOBAL_OFFSET_TABLE_;
  local_70 = param_4;
  local_74 = param_5;
  var_7 = param_6;
  local_3c = (type_7 *)(var_1 + 0x6c);
  var_15 = var_2<var_3::type_2<var_4>>(local_3c);
  var_9 = auStack_7c;
  *param_8 = 0;
  if (var_5 != var_6) {
    local_4a = var_7 == -1;
    local_44 = var_8 + -0x4b990;
    local_38 = var_8 + -0xbcb5c;
    var_9 = auStack_7c;
    do {
      var_20 = *(int *)(var_9 + 0xc) == -1;
      var_19 = var_10 != (int *)0x0 && (bool)var_20;
      var_9[0x10] = var_19;
      if (var_19) {
        if ((type_4)var_10[2] < (type_4)var_10[3]) {
          var_9[0x10] = 0;
        }
        else {
          var_9[0x28] = var_20;
          var_11 = *var_10;
          *(int **)(var_9 + -0x10) = var_10;
          var_14 = *(type_1 **)(var_11 + 0x24);
          *(type_8 *)(var_9 + -0x14) = 0x27c42e;
          var_11 = (*var_14)();
          uVar12 = var_9[0x10];
          var_20 = var_9[0x28];
          if (var_11 == -1) {
            var_10 = (int *)0x0;
          }
          else {
            uVar12 = 0;
          }
          var_9[0x10] = uVar12;
        }
      }
      else {
        var_9[0x10] = var_20;
      }
      if ((*(int *)(var_9 + 8) != 0 & var_9[0x32]) == 0) {
        var_12 = var_9[0x32];
LAB_0027bd1f:
        if (var_12 == var_9[0x10]) {
LAB_0027c0a4:
          **(type_8 **)(var_9 + 0x9c) = 6;
          break;
        }
      }
      else {
        if (*(type_4 *)(*(int *)(var_9 + 8) + 0xc) <= *(type_4 *)(*(int *)(var_9 + 8) + 8)) {
          var_9[0x2c] = var_20;
          var_9[0x28] = *(int *)(var_9 + 8) != 0 & var_9[0x32];
          piVar3 = *(int **)(var_9 + 8);
          var_11 = *piVar3;
          *(int **)(var_9 + -0x10) = piVar3;
          var_14 = *(type_1 **)(var_11 + 0x24);
          *(type_8 *)(var_9 + -0x14) = 0x27c46c;
          var_11 = (*var_14)();
          var_12 = var_9[0x28];
          piVar4 = (int *)0x0;
          if (var_11 != -1) {
            var_12 = '\0';
            piVar4 = piVar3;
          }
          var_20 = var_9[0x2c];
          *(int **)(var_9 + 8) = piVar4;
          goto LAB_0027bd1f;
        }
        if (var_9[0x10] == '\0') goto LAB_0027c0a4;
      }
      var_24 = *var_5;
      var_13 = var_15[(type_3)var_24 + 0x11d];
      *(type_4 *)(var_9 + 0x10) = (type_4)(type_3)var_24;
      if (var_13 == (type_2)0x0) {
        var_14 = *(type_1 **)(*(int *)var_15 + 0x20);
        var_13 = var_24;
        if (var_14 != *(type_1 **)(*(int *)(var_9 + 0x14) + -0x24c)) {
          var_9[0x28] = var_20;
          *(type_8 *)(var_9 + -8) = 0;
          *(int *)(var_9 + -0xc) = (int)(char)var_24;
          *(type_2 **)(var_9 + -0x10) = var_15;
          *(type_8 *)(var_9 + -0x14) = 0x27c190;
          var_13 = (type_2)(*var_14)();
          var_20 = var_9[0x28];
        }
        if (var_13 != (type_2)0x0) {
          var_15[*(int *)(var_9 + 0x10) + 0x11d] = var_13;
          goto LAB_0027bd69;
        }
LAB_0027bc28:
        var_11 = *(int *)(var_15 + 0x18);
        if ((*(type_3 *)(var_11 + 1 + (type_4)(type_3)*var_5 * 2) & 0x20) != 0) {
          var_16 = var_5 + 1;
          if (*(type_2 **)(var_9 + 0xa8) == var_16) {
            var_16 = *(type_2 **)(var_9 + 0xa8);
          }
          else if ((*(type_3 *)(var_11 + 1 + (type_4)(type_3)var_5[1] * 2) & 0x20) != 0) {
            do {
              var_16 = var_16 + 1;
              if (*(type_2 **)(var_9 + 0xa8) == var_16) break;
            } while ((*(type_3 *)(var_11 + 1 + (type_4)(type_3)*var_16 * 2) & 0x20) != 0);
          }
          *(type_2 **)(var_9 + 0xa4) = var_16;
          var_17 = *(type_4 *)(var_9 + 0xc);
          *(type_2 **)(var_9 + 0x10) = var_15;
          var_20 = var_17 == 0xffffffff;
          bVar15 = var_10 != (int *)0x0 && (bool)var_20;
          var_19 = (bool)var_20;
          if (bVar15) goto LAB_0027bfff;
LAB_0027bfa2:
          var_18 = *(int *)(var_9 + 8) != 0 & var_9[0x32];
          if (var_18 != 0) goto LAB_0027c01c;
LAB_0027bfb1:
          var_12 = var_9[0x32];
LAB_0027bfb6:
          if ((bool)var_12 != var_19) {
            do {
              var_21 = var_17;
              if ((var_10 == (int *)0x0) || (var_20 == '\0')) {
LAB_0027bfc8:
                if ((*(type_3 *)(*(int *)(*(int *)(var_9 + 0x10) + 0x18) + 1 + (var_21 & 0xff) * 2)
                    & 0x20) == 0) break;
                var_22 = (type_3 *)var_10[2];
                if (var_22 < (type_3 *)var_10[3]) goto LAB_0027bfe5;
                var_11 = *var_10;
                *(int **)(var_9 + -0x10) = var_10;
                var_14 = *(type_1 **)(var_11 + 0x28);
                *(type_8 *)(var_9 + -0x14) = 0x27c0e9;
                (*var_14)();
              }
              else {
                var_22 = (type_3 *)var_10[2];
                if ((type_3 *)var_10[3] <= var_22) {
                  var_11 = *var_10;
                  *(int **)(var_9 + -0x10) = var_10;
                  var_14 = *(type_1 **)(var_11 + 0x24);
                  *(type_8 *)(var_9 + -0x14) = 0x27c3ae;
                  var_21 = (*var_14)();
                  if (var_21 == 0xffffffff) {
                    var_10 = (int *)0x0;
                  }
                  goto LAB_0027bfc8;
                }
                var_15 = *(type_2 **)(var_9 + 0x10);
                if ((*(type_3 *)(*(int *)(var_15 + 0x18) + 1 + (type_4)*var_22 * 2) & 0x20) == 0) {
                  var_5 = *(type_2 **)(var_9 + 0xa4);
                  *(type_8 *)(var_9 + 0xc) = 0xffffffff;
                  goto LAB_0027bccc;
                }
LAB_0027bfe5:
                var_10[2] = (int)(var_22 + 1);
              }
              var_17 = 0xffffffff;
              var_20 = true;
              bVar15 = var_10 != (int *)0x0;
              var_19 = (bool)var_20;
              if (!bVar15) goto LAB_0027bfa2;
LAB_0027bfff:
              if ((type_4)var_10[3] <= (type_4)var_10[2]) {
                var_9[0xc] = var_20;
                var_11 = *var_10;
                *(int **)(var_9 + -0x10) = var_10;
                var_14 = *(type_1 **)(var_11 + 0x24);
                *(type_8 *)(var_9 + -0x14) = 0x27c30d;
                var_11 = (*var_14)();
                var_19 = false;
                if (var_11 == -1) {
                  var_10 = (int *)0x0;
                  var_19 = bVar15;
                }
                var_20 = var_9[0xc];
                goto LAB_0027bfa2;
              }
              var_19 = false;
              var_18 = *(int *)(var_9 + 8) != 0 & var_9[0x32];
              if (var_18 == 0) goto LAB_0027bfb1;
LAB_0027c01c:
              if (*(type_4 *)(*(int *)(var_9 + 8) + 0xc) <= *(type_4 *)(*(int *)(var_9 + 8) + 8))
              goto LAB_0027c2c0;
              if (var_19 == false) break;
            } while( true );
          }
          *(type_4 *)(var_9 + 0xc) = var_17;
          var_15 = *(type_2 **)(var_9 + 0x10);
          var_5 = *(type_2 **)(var_9 + 0xa4);
          goto LAB_0027bccc;
        }
        if ((var_10 == (int *)0x0) || (var_20 == '\0')) {
          var_12 = var_9[0xc];
        }
        else if ((char *)var_10[2] < (char *)var_10[3]) {
          var_12 = *(char *)var_10[2];
        }
        else {
          var_9[0x10] = var_20;
          var_11 = *var_10;
          *(int **)(var_9 + -0x10) = var_10;
          var_14 = *(type_1 **)(var_11 + 0x24);
          *(type_8 *)(var_9 + -0x14) = 0x27c4df;
          var_23 = (*var_14)();
          var_20 = var_9[0x10];
          var_11 = -1;
          if (var_23 != -1) {
            var_11 = var_23;
          }
          var_12 = (char)var_11;
          if (var_23 == -1) {
            var_10 = (int *)0x0;
          }
        }
        var_11 = *(int *)var_15;
        var_9[0x10] = var_20;
        *(int *)(var_9 + -0xc) = (int)var_12;
        *(type_2 **)(var_9 + -0x10) = var_15;
        var_14 = *(type_1 **)(var_11 + 0x10);
        *(type_8 *)(var_9 + -0x14) = 0x27bc5c;
        var_20 = (*var_14)();
        var_11 = *(int *)var_15;
        *(int *)(var_9 + -0xc) = (int)(char)*var_5;
        *(type_2 **)(var_9 + -0x10) = var_15;
        var_14 = *(type_1 **)(var_11 + 0x10);
        *(type_8 *)(var_9 + -0x14) = 0x27bc6b;
        var_12 = (*var_14)();
        if (var_12 != var_20) {
          if ((var_10 == (int *)0x0) || (var_9[0x10] == '\0')) {
            var_20 = var_9[0xc];
          }
          else if ((char *)var_10[2] < (char *)var_10[3]) {
            var_20 = *(char *)var_10[2];
          }
          else {
            var_11 = *var_10;
            *(int **)(var_9 + -0x10) = var_10;
            var_14 = *(type_1 **)(var_11 + 0x24);
            *(type_8 *)(var_9 + -0x14) = 0x27c50a;
            var_23 = (*var_14)();
            var_11 = -1;
            if (var_23 != -1) {
              var_11 = var_23;
            }
            var_20 = (char)var_11;
            if (var_23 == -1) {
              var_10 = (int *)0x0;
            }
          }
          var_11 = *(int *)var_15;
          *(int *)(var_9 + -0xc) = (int)var_20;
          *(type_2 **)(var_9 + -0x10) = var_15;
          var_14 = *(type_1 **)(var_11 + 8);
          *(type_8 *)(var_9 + -0x14) = 0x27bc95;
          var_20 = (*var_14)();
          var_11 = *(int *)var_15;
          *(int *)(var_9 + -0xc) = (int)(char)*var_5;
          *(type_2 **)(var_9 + -0x10) = var_15;
          var_14 = *(type_1 **)(var_11 + 8);
          *(type_8 *)(var_9 + -0x14) = 0x27bca4;
          var_12 = (*var_14)();
          if (var_12 != var_20) {
LAB_0027c4c0:
            **(type_8 **)(var_9 + 0x9c) = 4;
            break;
          }
        }
        if ((type_4)var_10[2] < (type_4)var_10[3]) {
          var_10[2] = var_10[2] + 1;
        }
        else {
          var_11 = *var_10;
          *(int **)(var_9 + -0x10) = var_10;
          var_14 = *(type_1 **)(var_11 + 0x28);
          *(type_8 *)(var_9 + -0x14) = 0x27c419;
          (*var_14)();
        }
        *(type_8 *)(var_9 + 0xc) = 0xffffffff;
        var_5 = var_5 + 1;
LAB_0027bccc:
        if (*(type_2 **)(var_9 + 0xa8) == var_5) break;
      }
      else {
LAB_0027bd69:
        if (var_13 != (type_2)0x25) goto LAB_0027bc28;
        *(type_2 **)(var_9 + 0x28) = var_5 + 1;
        if (*(type_2 **)(var_9 + 0xa8) == var_5 + 1) goto LAB_0027c4c0;
        var_24 = var_5[1];
        *(type_4 *)(var_9 + 0x2c) = (type_4)(type_3)var_24;
        var_13 = var_15[(type_3)var_24 + 0x11d];
        *(type_2 *)(var_9 + 0x10) = var_13;
        uVar12 = 0x25;
        if (var_13 == (type_2)0x0) {
          var_14 = *(type_1 **)(*(int *)var_15 + 0x20);
          if (var_14 != *(type_1 **)(*(int *)(var_9 + 0x14) + -0x24c)) {
            var_9[0x10] = 0x25;
            *(type_8 *)(var_9 + -8) = 0;
            *(int *)(var_9 + -0xc) = (int)(char)var_24;
            *(type_2 **)(var_9 + -0x10) = var_15;
            *(type_8 *)(var_9 + -0x14) = 0x27c3f8;
            var_24 = (type_2)(*var_14)();
            uVar12 = var_9[0x10];
          }
          if (var_24 != (type_2)0x0) {
            *(type_2 *)(var_9 + 0x10) = var_24;
            var_15[*(int *)(var_9 + 0x2c) + 0x11d] = var_24;
            goto LAB_0027bdcc;
          }
          var_9[0x10] = 0;
          var_11 = 0;
          *(type_8 *)(var_9 + 0x3c) = 0;
          var_24 = (type_2)0x0;
        }
        else {
LAB_0027bdcc:
          var_24 = *(type_2 *)(var_9 + 0x10);
          if ((var_24 == (type_2)0x45) || (var_24 == (type_2)0x4f)) {
            *(type_2 **)(var_9 + 0x28) = var_5 + 2;
            if (*(type_2 **)(var_9 + 0xa8) == var_5 + 2) goto LAB_0027c4c0;
            var_13 = var_5[2];
            *(type_4 *)(var_9 + 0x2c) = (type_4)(type_3)var_13;
            var_24 = var_15[(type_3)var_13 + 0x11d];
            *(int *)(var_9 + 0x3c) = (int)(char)var_9[0x10];
            if (var_24 == (type_2)0x0) {
              var_11 = (int)(char)var_13;
              var_14 = *(type_1 **)(*(int *)var_15 + 0x20);
              var_24 = var_13;
              if (var_14 != *(type_1 **)(*(int *)(var_9 + 0x14) + -0x24c)) {
                var_9[0x33] = uVar12;
                *(type_8 *)(var_9 + -8) = 0;
                *(int *)(var_9 + -0xc) = var_11;
                *(type_2 **)(var_9 + -0x10) = var_15;
                *(type_8 *)(var_9 + -0x14) = 0x27c4a2;
                var_24 = (type_2)(*var_14)();
                uVar12 = var_9[0x33];
                var_11 = (int)(char)var_24;
              }
              if (var_24 != (type_2)0x0) {
                var_15[*(int *)(var_9 + 0x2c) + 0x11d] = var_24;
              }
            }
            else {
              var_11 = (int)(char)var_24;
            }
          }
          else {
            *(type_8 *)(var_9 + 0x3c) = 0;
            var_11 = (int)(char)var_24;
            var_9[0x10] = 0;
          }
        }
        var_9[0x33] = uVar12;
        *(type_2 *)(var_9 + 0x2c) = var_24;
        var_14 = *(type_1 **)(**(int **)(var_9 + 0x84) + 0x20);
        if (var_14 == *(type_1 **)(var_9 + 0x38)) {
          *(type_8 *)(var_9 + -0x10) = *(type_8 *)(var_9 + 0x40);
          *(type_8 *)(var_9 + -0x14) = 0x27be21;
          var_16 = var_2<var_3::type_2<var_4>>(*(type_7 **)(var_9 + -0x10));
          uVar12 = var_9[0x2c];
          uVar1 = var_9[0x33];
          **(type_8 **)(var_9 + 0x9c) = 0;
          if (var_16[0x1c] == (type_2)0x0) {
            var_9[0x33] = uVar1;
            var_9[0x2c] = uVar12;
            *(type_2 **)(var_9 + -0x10) = var_16;
            *(type_8 *)(var_9 + -0x14) = 0x27c1b5;
            type_2<var_4>::var_25(*(type_2<var_4> **)(var_9 + -0x10));
            uVar12 = var_9[0x2c];
            var_24 = *(type_2 *)(var_9 + 0x33);
            var_14 = *(type_1 **)(*(int *)var_16 + 0x18);
            if (var_14 != *(type_1 **)(var_9 + 0x44)) {
              *(type_8 *)(var_9 + -0xc) = 0x25;
              *(type_2 **)(var_9 + -0x10) = var_16;
              *(type_8 *)(var_9 + -0x14) = 0x27c1da;
              var_24 = (type_2)(*var_14)();
              uVar12 = var_9[0x2c];
            }
          }
          else {
            var_24 = var_16[0x42];
          }
          *(type_2 *)(var_9 + 0x5c) = var_24;
          if (var_9[0x10] == '\0') {
            var_9[0x5d] = uVar12;
            var_9[0x5e] = 0;
          }
          else {
            var_9[0x5e] = uVar12;
            var_9[0x5f] = 0;
            var_9[0x5d] = var_9[0x10];
          }
          *(int **)(var_9 + 0x18) = var_10;
          *(type_8 *)(var_9 + 0x1c) = *(type_8 *)(var_9 + 0xc);
          *(type_8 *)(var_9 + 0x20) = *(type_8 *)(var_9 + 8);
          *(type_8 *)(var_9 + 0x24) = *(type_8 *)(var_9 + 0x34);
          *(type_5 **)(var_9 + -0xc) = var_9 + 0x5c;
          *(type_8 *)(var_9 + -0x10) = *(type_8 *)(var_9 + 0xa0);
          *(type_8 *)(var_9 + -0x14) = *(type_8 *)(var_9 + 0x9c);
          *(type_8 *)(var_9 + -0x18) = *(type_8 *)(var_9 + 0x98);
          *(type_8 *)(var_9 + -0x1c) = *(type_8 *)(var_9 + 0x24);
          *(type_8 *)(var_9 + -0x20) = *(type_8 *)(var_9 + 0x20);
          *(type_8 *)(var_9 + -0x24) = *(type_8 *)(var_9 + 0x1c);
          *(type_8 *)(var_9 + -0x28) = *(type_8 *)(var_9 + 0x18);
          *(type_8 *)(var_9 + -0x2c) = *(type_8 *)(var_9 + 0x84);
          *(type_5 **)(var_9 + -0x30) = var_9 + 0x48;
          *(type_8 *)(var_9 + -0x34) = 0x27bec1;
          var_26();
          var_11 = *(int *)(var_9 + 0x4c);
          var_10 = *(int **)(var_9 + 0x48);
          *(int *)(var_9 + 0x1c) = var_11;
          *(int *)(var_9 + 0xc) = var_11;
          *(int **)(var_9 + 0x18) = var_10;
          var_19 = var_10 != (int *)0x0 && var_11 == -1;
          var_20 = var_11 == -1;
          if ((var_19) && (var_20 = '\0', (type_4)var_10[3] <= (type_4)var_10[2])) {
            var_9[0x10] = var_19;
            var_11 = *var_10;
            *(type_8 *)(var_9 + -0x10) = *(type_8 *)(var_9 + 0x18);
            var_14 = *(type_1 **)(var_11 + 0x24);
            *(type_8 *)(var_9 + -0x14) = 0x27c37e;
            var_11 = (*var_14)();
            if (var_11 == -1) {
              var_10 = (int *)0x0;
              var_20 = var_9[0x10];
            }
          }
          if ((*(int *)(var_9 + 8) == 0) || (var_9[0x32] == '\0')) {
            var_12 = var_9[0x32];
          }
          else {
            var_12 = '\0';
            if (*(type_4 *)(*(int *)(var_9 + 8) + 0xc) <= *(type_4 *)(*(int *)(var_9 + 8) + 8)) {
              var_11 = **(int **)(var_9 + 8);
              *(int **)(var_9 + -0x10) = *(int **)(var_9 + 8);
              var_14 = *(type_1 **)(var_11 + 0x24);
              *(type_8 *)(var_9 + -0x14) = 0x27c34f;
              var_11 = (*var_14)();
              var_12 = var_11 == -1;
            }
          }
          if (var_12 == var_20) {
            **(type_4 **)(var_9 + 0x9c) = **(type_4 **)(var_9 + 0x9c) | 2;
          }
        }
        else {
          *(int **)(var_9 + 0x88) = var_10;
          *(type_8 *)(var_9 + 0x8c) = *(type_8 *)(var_9 + 0xc);
          *(type_8 *)(var_9 + 0x94) = *(type_8 *)(var_9 + 0x34);
          *(type_8 *)(var_9 + 0x90) = *(type_8 *)(var_9 + 8);
          *(type_8 *)(var_9 + -8) = *(type_8 *)(var_9 + 0x3c);
          *(int *)(var_9 + -0xc) = var_11;
          *(type_8 *)(var_9 + -0x10) = *(type_8 *)(var_9 + 0xa0);
          *(type_8 *)(var_9 + -0x14) = *(type_8 *)(var_9 + 0x9c);
          *(type_8 *)(var_9 + -0x18) = *(type_8 *)(var_9 + 0x98);
          *(type_8 *)(var_9 + -0x1c) = *(type_8 *)(var_9 + 0x94);
          *(type_8 *)(var_9 + -0x20) = *(type_8 *)(var_9 + 0x90);
          *(type_8 *)(var_9 + -0x24) = *(type_8 *)(var_9 + 0x8c);
          *(type_8 *)(var_9 + -0x28) = *(type_8 *)(var_9 + 0x88);
          *(type_8 *)(var_9 + -0x2c) = *(type_8 *)(var_9 + 0x84);
          *(type_5 **)(var_9 + -0x30) = var_9 + 0x48;
          *(type_8 *)(var_9 + -0x34) = 0x27c28f;
          (*var_14)();
          *(type_8 *)(var_9 + 0x84) = *(type_8 *)(var_9 + 0x44);
          var_10 = *(int **)(var_9 + 0x84);
          *(type_8 *)(var_9 + 0x88) = *(type_8 *)(var_9 + 0x48);
          *(type_8 *)(var_9 + 8) = *(type_8 *)(var_9 + 0x88);
          var_9 = var_9 + -4;
        }
        var_5 = (type_2 *)(*(int *)(var_9 + 0x28) + 1);
        if (*(type_2 **)(var_9 + 0xa8) == var_5) break;
      }
    } while (**(int **)(var_9 + 0x9c) == 0);
  }
  piVar3 = *(int **)(var_9 + 0x80);
  var_11 = *(int *)(var_9 + 0xc);
  *piVar3 = (int)var_10;
  piVar3[1] = var_11;
  return;
LAB_0027c2c0:
  var_9[0x28] = var_20;
  var_9[0xc] = var_18;
  piVar3 = *(int **)(var_9 + 8);
  var_11 = *piVar3;
  *(int **)(var_9 + -0x10) = piVar3;
  var_14 = *(type_1 **)(var_11 + 0x24);
  *(type_8 *)(var_9 + -0x14) = 0x27c2d5;
  var_11 = (*var_14)();
  var_12 = var_9[0xc];
  piVar4 = (int *)0x0;
  if (var_11 != -1) {
    var_12 = '\0';
    piVar4 = piVar3;
  }
  var_20 = var_9[0x28];
  *(int **)(var_9 + 8) = piVar4;
  goto LAB_0027bfb6;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal)))) (break_statement))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) right: (identifier))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (number_literal)))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (break_statement))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (number_literal)))))) right: (number_literal))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) right: (number_literal))) right: (number_literal))) consequence: (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (number_literal)))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (true))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) consequence: (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (false))) consequence: (break_statement))) condition: (parenthesized_expression (true)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal)))) (break_statement))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (break_statement))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) right: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (identifier)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (char_literal (escape_sequence))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) right: (identifier))) consequence: (break_statement))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (goto_statement label: (statement_identifier)))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void MASKED(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,
                 undefined4 param_5,int param_6,int param_7,undefined4 *param_8,undefined4 param_9,
                 byte *param_10,byte *param_11)

{
  undefined4 *puVar1;
  code *pcVar2;
  int *piVar3;
  undefined1 *puVar4;
  byte bVar5;
  undefined1 uVar6;
  byte bVar7;
  int *piVar8;
  int *piVar9;
  uint uVar10;
  int iVar11;
  undefined1 uVar12;
  bool bVar13;
  bool bVar14;
  undefined1 *puVar15;
  undefined1 *puVar16;
  int iVar17;
  byte *pbVar18;
  uint uVar19;
  char cVar20;
  char cVar21;
  int aiStackY_b0 [9];
  undefined1 auStack_7c [4];
  int local_78 [2];
  uint local_70;
  uint local_6c;
  undefined **local_68;
  int local_64 [4];
  byte local_54 [4];
  undefined4 local_50;
  bool local_4a [2];
  int local_48;
  undefined **local_44;
  int local_40 [2];
  undefined **local_38;
  int local_34 [5];
  undefined1 local_20 [16];
  
  local_68 = &__DT_PLTGOT;
  local_70 = param_4;
  local_78[1] = param_5;
  local_48 = param_6;
  local_40[1] = param_7 + 0x6c;
  piVar8 = (int *)FUN_00212050(local_40[1]);
  *param_8 = 0;
  puVar16 = auStack_7c;
  if (param_10 != param_11) {
    local_4a[0] = local_48 == -1;
    local_44 = local_68 + -0x4b990;
    local_38 = local_68 + -0xbcb5c;
    puVar16 = auStack_7c;
    do {
      cVar20 = *(int *)(puVar16 + 0xc) == -1;
      bVar13 = param_3 != (int *)0x0 && (bool)cVar20;
      puVar16[0x10] = bVar13;
      if (bVar13) {
        if ((uint)param_3[2] < (uint)param_3[3]) {
          puVar16[0x10] = 0;
        }
        else {
          puVar16[0x28] = cVar20;
          iVar17 = *param_3;
          *(int **)(puVar16 + -0x10) = param_3;
          pcVar2 = *(code **)(iVar17 + 0x24);
          *(undefined4 *)(puVar16 + -0x14) = 0x27c42e;
          iVar17 = (*pcVar2)();
          uVar12 = puVar16[0x10];
          cVar20 = puVar16[0x28];
          if (iVar17 == -1) {
            param_3 = (int *)0x0;
          }
          else {
            uVar12 = 0;
          }
          puVar16[0x10] = uVar12;
        }
      }
      else {
        puVar16[0x10] = cVar20;
      }
      if ((*(int *)(puVar16 + 8) != 0 & puVar16[0x32]) == 0) {
        cVar21 = puVar16[0x32];
LAB_0027bd1f:
        if (cVar21 == puVar16[0x10]) {
LAB_0027c0a4:
          **(undefined4 **)(puVar16 + 0x9c) = 6;
          break;
        }
      }
      else {
        if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8)) {
          puVar16[0x2c] = cVar20;
          puVar16[0x28] = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];
          piVar9 = *(int **)(puVar16 + 8);
          iVar17 = *piVar9;
          *(int **)(puVar16 + -0x10) = piVar9;
          pcVar2 = *(code **)(iVar17 + 0x24);
          *(undefined4 *)(puVar16 + -0x14) = 0x27c46c;
          iVar17 = (*pcVar2)();
          cVar21 = puVar16[0x28];
          piVar3 = (int *)0x0;
          if (iVar17 != -1) {
            cVar21 = '\0';
            piVar3 = piVar9;
          }
          cVar20 = puVar16[0x2c];
          *(int **)(puVar16 + 8) = piVar3;
          goto LAB_0027bd1f;
        }
        if (puVar16[0x10] == '\0') goto LAB_0027c0a4;
      }
      bVar7 = *param_10;
      bVar5 = *(byte *)((int)piVar8 + bVar7 + 0x11d);
      *(uint *)(puVar16 + 0x10) = (uint)bVar7;
      if (bVar5 == 0) {
        pcVar2 = *(code **)(*piVar8 + 0x20);
        bVar5 = bVar7;
        if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {
          puVar16[0x28] = cVar20;
          *(undefined4 *)(puVar16 + -8) = 0;
          *(int *)(puVar16 + -0xc) = (int)(char)bVar7;
          *(int **)(puVar16 + -0x10) = piVar8;
          *(undefined4 *)(puVar16 + -0x14) = 0x27c190;
          bVar5 = (*pcVar2)();
          cVar20 = puVar16[0x28];
        }
        if (bVar5 != 0) {
          *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x10) + 0x11d) = bVar5;
          goto LAB_0027bd69;
        }
LAB_0027bc28:
        iVar17 = piVar8[6];
        if ((*(byte *)(iVar17 + 1 + (uint)*param_10 * 2) & 0x20) != 0) {
          pbVar18 = param_10 + 1;
          if (*(byte **)(puVar16 + 0xa8) == pbVar18) {
            pbVar18 = *(byte **)(puVar16 + 0xa8);
          }
          else if ((*(byte *)(iVar17 + 1 + (uint)param_10[1] * 2) & 0x20) != 0) {
            do {
              pbVar18 = pbVar18 + 1;
              if (*(byte **)(puVar16 + 0xa8) == pbVar18) break;
            } while ((*(byte *)(iVar17 + 1 + (uint)*pbVar18 * 2) & 0x20) != 0);
          }
          *(byte **)(puVar16 + 0xa4) = pbVar18;
          uVar19 = *(uint *)(puVar16 + 0xc);
          *(int **)(puVar16 + 0x10) = piVar8;
          cVar20 = uVar19 == 0xffffffff;
          bVar14 = param_3 != (int *)0x0 && (bool)cVar20;
          bVar13 = (bool)cVar20;
          if (bVar14) goto LAB_0027bfff;
LAB_0027bfa2:
          bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];
          if (bVar7 != 0) goto LAB_0027c01c;
LAB_0027bfb1:
          cVar21 = puVar16[0x32];
LAB_0027bfb6:
          if ((bool)cVar21 != bVar13) {
            do {
              uVar10 = uVar19;
              if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {
LAB_0027bfc8:
                if ((*(byte *)(*(int *)(*(int *)(puVar16 + 0x10) + 0x18) + 1 + (uVar10 & 0xff) * 2)
                    & 0x20) == 0) break;
                pbVar18 = (byte *)param_3[2];
                if (pbVar18 < (byte *)param_3[3]) goto LAB_0027bfe5;
                iVar17 = *param_3;
                *(int **)(puVar16 + -0x10) = param_3;
                pcVar2 = *(code **)(iVar17 + 0x28);
                *(undefined4 *)(puVar16 + -0x14) = 0x27c0e9;
                (*pcVar2)();
              }
              else {
                pbVar18 = (byte *)param_3[2];
                if ((byte *)param_3[3] <= pbVar18) {
                  iVar17 = *param_3;
                  *(int **)(puVar16 + -0x10) = param_3;
                  pcVar2 = *(code **)(iVar17 + 0x24);
                  *(undefined4 *)(puVar16 + -0x14) = 0x27c3ae;
                  uVar10 = (*pcVar2)();
                  if (uVar10 == 0xffffffff) {
                    param_3 = (int *)0x0;
                  }
                  goto LAB_0027bfc8;
                }
                piVar8 = *(int **)(puVar16 + 0x10);
                if ((*(byte *)(piVar8[6] + 1 + (uint)*pbVar18 * 2) & 0x20) == 0) {
                  param_10 = *(byte **)(puVar16 + 0xa4);
                  *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;
                  goto LAB_0027bccc;
                }
LAB_0027bfe5:
                param_3[2] = (int)(pbVar18 + 1);
              }
              uVar19 = 0xffffffff;
              cVar20 = true;
              bVar14 = param_3 != (int *)0x0;
              bVar13 = (bool)cVar20;
              if (!bVar14) goto LAB_0027bfa2;
LAB_0027bfff:
              if ((uint)param_3[3] <= (uint)param_3[2]) {
                puVar16[0xc] = cVar20;
                iVar17 = *param_3;
                *(int **)(puVar16 + -0x10) = param_3;
                pcVar2 = *(code **)(iVar17 + 0x24);
                *(undefined4 *)(puVar16 + -0x14) = 0x27c30d;
                iVar17 = (*pcVar2)();
                bVar13 = false;
                if (iVar17 == -1) {
                  param_3 = (int *)0x0;
                  bVar13 = bVar14;
                }
                cVar20 = puVar16[0xc];
                goto LAB_0027bfa2;
              }
              bVar13 = false;
              bVar7 = *(int *)(puVar16 + 8) != 0 & puVar16[0x32];
              if (bVar7 == 0) goto LAB_0027bfb1;
LAB_0027c01c:
              if (*(uint *)(*(int *)(puVar16 + 8) + 0xc) <= *(uint *)(*(int *)(puVar16 + 8) + 8))
              goto LAB_0027c2c0;
              if (bVar13 == false) break;
            } while( true );
          }
          *(uint *)(puVar16 + 0xc) = uVar19;
          piVar8 = *(int **)(puVar16 + 0x10);
          param_10 = *(byte **)(puVar16 + 0xa4);
          goto LAB_0027bccc;
        }
        if ((param_3 == (int *)0x0) || (cVar20 == '\0')) {
          cVar21 = puVar16[0xc];
        }
        else if ((char *)param_3[2] < (char *)param_3[3]) {
          cVar21 = *(char *)param_3[2];
        }
        else {
          puVar16[0x10] = cVar20;
          iVar17 = *param_3;
          *(int **)(puVar16 + -0x10) = param_3;
          pcVar2 = *(code **)(iVar17 + 0x24);
          *(undefined4 *)(puVar16 + -0x14) = 0x27c4df;
          iVar11 = (*pcVar2)();
          cVar20 = puVar16[0x10];
          iVar17 = -1;
          if (iVar11 != -1) {
            iVar17 = iVar11;
          }
          cVar21 = (char)iVar17;
          if (iVar11 == -1) {
            param_3 = (int *)0x0;
          }
        }
        iVar17 = *piVar8;
        puVar16[0x10] = cVar20;
        *(int *)(puVar16 + -0xc) = (int)cVar21;
        *(int **)(puVar16 + -0x10) = piVar8;
        pcVar2 = *(code **)(iVar17 + 0x10);
        *(undefined4 *)(puVar16 + -0x14) = 0x27bc5c;
        cVar20 = (*pcVar2)();
        iVar17 = *piVar8;
        *(int *)(puVar16 + -0xc) = (int)(char)*param_10;
        *(int **)(puVar16 + -0x10) = piVar8;
        pcVar2 = *(code **)(iVar17 + 0x10);
        *(undefined4 *)(puVar16 + -0x14) = 0x27bc6b;
        cVar21 = (*pcVar2)();
        if (cVar21 != cVar20) {
          if ((param_3 == (int *)0x0) || (puVar16[0x10] == '\0')) {
            cVar20 = puVar16[0xc];
          }
          else if ((char *)param_3[2] < (char *)param_3[3]) {
            cVar20 = *(char *)param_3[2];
          }
          else {
            iVar17 = *param_3;
            *(int **)(puVar16 + -0x10) = param_3;
            pcVar2 = *(code **)(iVar17 + 0x24);
            *(undefined4 *)(puVar16 + -0x14) = 0x27c50a;
            iVar11 = (*pcVar2)();
            iVar17 = -1;
            if (iVar11 != -1) {
              iVar17 = iVar11;
            }
            cVar20 = (char)iVar17;
            if (iVar11 == -1) {
              param_3 = (int *)0x0;
            }
          }
          iVar17 = *piVar8;
          *(int *)(puVar16 + -0xc) = (int)cVar20;
          *(int **)(puVar16 + -0x10) = piVar8;
          pcVar2 = *(code **)(iVar17 + 8);
          *(undefined4 *)(puVar16 + -0x14) = 0x27bc95;
          cVar20 = (*pcVar2)();
          iVar17 = *piVar8;
          *(int *)(puVar16 + -0xc) = (int)(char)*param_10;
          *(int **)(puVar16 + -0x10) = piVar8;
          pcVar2 = *(code **)(iVar17 + 8);
          *(undefined4 *)(puVar16 + -0x14) = 0x27bca4;
          cVar21 = (*pcVar2)();
          if (cVar21 != cVar20) {
LAB_0027c4c0:
            **(undefined4 **)(puVar16 + 0x9c) = 4;
            break;
          }
        }
        if ((uint)param_3[2] < (uint)param_3[3]) {
          param_3[2] = param_3[2] + 1;
        }
        else {
          iVar17 = *param_3;
          *(int **)(puVar16 + -0x10) = param_3;
          pcVar2 = *(code **)(iVar17 + 0x28);
          *(undefined4 *)(puVar16 + -0x14) = 0x27c419;
          (*pcVar2)();
        }
        *(undefined4 *)(puVar16 + 0xc) = 0xffffffff;
        param_10 = param_10 + 1;
LAB_0027bccc:
        puVar4 = puVar16;
        if (*(byte **)(puVar16 + 0xa8) == param_10) break;
      }
      else {
LAB_0027bd69:
        if (bVar5 != 0x25) goto LAB_0027bc28;
        *(byte **)(puVar16 + 0x28) = param_10 + 1;
        if (*(byte **)(puVar16 + 0xa8) == param_10 + 1) goto LAB_0027c4c0;
        bVar7 = param_10[1];
        *(uint *)(puVar16 + 0x2c) = (uint)bVar7;
        cVar20 = *(char *)((int)piVar8 + bVar7 + 0x11d);
        puVar16[0x10] = cVar20;
        uVar12 = 0x25;
        if (cVar20 == '\0') {
          pcVar2 = *(code **)(*piVar8 + 0x20);
          if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {
            puVar16[0x10] = 0x25;
            *(undefined4 *)(puVar16 + -8) = 0;
            *(int *)(puVar16 + -0xc) = (int)(char)bVar7;
            *(int **)(puVar16 + -0x10) = piVar8;
            *(undefined4 *)(puVar16 + -0x14) = 0x27c3f8;
            bVar7 = (*pcVar2)();
            uVar12 = puVar16[0x10];
          }
          if (bVar7 != 0) {
            puVar16[0x10] = bVar7;
            *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;
            goto LAB_0027bdcc;
          }
          puVar16[0x10] = 0;
          iVar17 = 0;
          *(undefined4 *)(puVar16 + 0x3c) = 0;
          bVar7 = 0;
        }
        else {
LAB_0027bdcc:
          bVar7 = puVar16[0x10];
          if ((bVar7 == 0x45) || (bVar7 == 0x4f)) {
            *(byte **)(puVar16 + 0x28) = param_10 + 2;
            if (*(byte **)(puVar16 + 0xa8) == param_10 + 2) goto LAB_0027c4c0;
            bVar5 = param_10[2];
            *(uint *)(puVar16 + 0x2c) = (uint)bVar5;
            bVar7 = *(byte *)((int)piVar8 + bVar5 + 0x11d);
            *(int *)(puVar16 + 0x3c) = (int)(char)puVar16[0x10];
            if (bVar7 == 0) {
              iVar17 = (int)(char)bVar5;
              pcVar2 = *(code **)(*piVar8 + 0x20);
              bVar7 = bVar5;
              if (pcVar2 != *(code **)(*(int *)(puVar16 + 0x14) + -0x24c)) {
                puVar16[0x33] = uVar12;
                *(undefined4 *)(puVar16 + -8) = 0;
                *(int *)(puVar16 + -0xc) = iVar17;
                *(int **)(puVar16 + -0x10) = piVar8;
                *(undefined4 *)(puVar16 + -0x14) = 0x27c4a2;
                bVar7 = (*pcVar2)();
                uVar12 = puVar16[0x33];
                iVar17 = (int)(char)bVar7;
              }
              if (bVar7 != 0) {
                *(byte *)((int)piVar8 + *(int *)(puVar16 + 0x2c) + 0x11d) = bVar7;
              }
            }
            else {
              iVar17 = (int)(char)bVar7;
            }
          }
          else {
            *(undefined4 *)(puVar16 + 0x3c) = 0;
            iVar17 = (int)(char)bVar7;
            puVar16[0x10] = 0;
          }
        }
        puVar16[0x33] = uVar12;
        puVar16[0x2c] = bVar7;
        pcVar2 = *(code **)(**(int **)(puVar16 + 0x84) + 0x20);
        if (pcVar2 == *(code **)(puVar16 + 0x38)) {
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x40);
          *(undefined4 *)(puVar16 + -0x14) = 0x27be21;
          piVar9 = (int *)FUN_00212050();
          uVar12 = puVar16[0x2c];
          uVar6 = puVar16[0x33];
          **(undefined4 **)(puVar16 + 0x9c) = 0;
          if ((char)piVar9[7] == '\0') {
            puVar16[0x33] = uVar6;
            puVar16[0x2c] = uVar12;
            *(int **)(puVar16 + -0x10) = piVar9;
            *(undefined4 *)(puVar16 + -0x14) = 0x27c1b5;
            FUN_00242f30();
            uVar12 = puVar16[0x2c];
            uVar6 = puVar16[0x33];
            pcVar2 = *(code **)(*piVar9 + 0x18);
            if (pcVar2 != *(code **)(puVar16 + 0x44)) {
              *(undefined4 *)(puVar16 + -0xc) = 0x25;
              *(int **)(puVar16 + -0x10) = piVar9;
              *(undefined4 *)(puVar16 + -0x14) = 0x27c1da;
              uVar6 = (*pcVar2)();
              uVar12 = puVar16[0x2c];
            }
          }
          else {
            uVar6 = *(undefined1 *)((int)piVar9 + 0x42);
          }
          puVar16[0x5c] = uVar6;
          if (puVar16[0x10] == '\0') {
            puVar16[0x5d] = uVar12;
            puVar16[0x5e] = 0;
          }
          else {
            puVar16[0x5e] = uVar12;
            puVar16[0x5f] = 0;
            puVar16[0x5d] = puVar16[0x10];
          }
          *(int **)(puVar16 + 0x18) = param_3;
          *(undefined4 *)(puVar16 + 0x1c) = *(undefined4 *)(puVar16 + 0xc);
          *(undefined4 *)(puVar16 + 0x20) = *(undefined4 *)(puVar16 + 8);
          *(undefined4 *)(puVar16 + 0x24) = *(undefined4 *)(puVar16 + 0x34);
          *(undefined1 **)(puVar16 + -0xc) = puVar16 + 0x5c;
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);
          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);
          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);
          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x24);
          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x20);
          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x1c);
          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x18);
          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);
          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;
          *(undefined4 *)(puVar16 + -0x34) = 0x27bec1;
          FUN_0027a830();
          iVar17 = *(int *)(puVar16 + 0x48);
          param_3 = *(int **)(puVar16 + 0x44);
          *(int *)(puVar16 + 0x18) = iVar17;
          *(int *)(puVar16 + 8) = iVar17;
          *(int **)(puVar16 + 0x14) = param_3;
          bVar13 = param_3 != (int *)0x0 && iVar17 == -1;
          cVar20 = iVar17 == -1;
          if ((bVar13) && (cVar20 = '\0', (uint)param_3[3] <= (uint)param_3[2])) {
            puVar16[0xc] = bVar13;
            iVar17 = *param_3;
            *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x14);
            pcVar2 = *(code **)(iVar17 + 0x24);
            *(undefined4 *)(puVar16 + -0x18) = 0x27c37e;
            iVar17 = (*pcVar2)();
            if (iVar17 == -1) {
              param_3 = (int *)0x0;
              cVar20 = puVar16[0xc];
            }
          }
          if ((*(int *)(puVar16 + 4) == 0) || (puVar16[0x2e] == '\0')) {
            cVar21 = puVar16[0x2e];
          }
          else {
            cVar21 = '\0';
            if (*(uint *)(*(int *)(puVar16 + 4) + 0xc) <= *(uint *)(*(int *)(puVar16 + 4) + 8)) {
              iVar17 = **(int **)(puVar16 + 4);
              *(int **)(puVar16 + -0x14) = *(int **)(puVar16 + 4);
              pcVar2 = *(code **)(iVar17 + 0x24);
              *(undefined4 *)(puVar16 + -0x18) = 0x27c34f;
              iVar17 = (*pcVar2)();
              cVar21 = iVar17 == -1;
            }
          }
          if (cVar21 == cVar20) {
            **(uint **)(puVar16 + 0x98) = **(uint **)(puVar16 + 0x98) | 2;
          }
        }
        else {
          *(int **)(puVar16 + 0x88) = param_3;
          *(undefined4 *)(puVar16 + 0x8c) = *(undefined4 *)(puVar16 + 0xc);
          *(undefined4 *)(puVar16 + 0x94) = *(undefined4 *)(puVar16 + 0x34);
          *(undefined4 *)(puVar16 + 0x90) = *(undefined4 *)(puVar16 + 8);
          *(undefined4 *)(puVar16 + -8) = *(undefined4 *)(puVar16 + 0x3c);
          *(int *)(puVar16 + -0xc) = iVar17;
          *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0xa0);
          *(undefined4 *)(puVar16 + -0x14) = *(undefined4 *)(puVar16 + 0x9c);
          *(undefined4 *)(puVar16 + -0x18) = *(undefined4 *)(puVar16 + 0x98);
          *(undefined4 *)(puVar16 + -0x1c) = *(undefined4 *)(puVar16 + 0x94);
          *(undefined4 *)(puVar16 + -0x20) = *(undefined4 *)(puVar16 + 0x90);
          *(undefined4 *)(puVar16 + -0x24) = *(undefined4 *)(puVar16 + 0x8c);
          *(undefined4 *)(puVar16 + -0x28) = *(undefined4 *)(puVar16 + 0x88);
          *(undefined4 *)(puVar16 + -0x2c) = *(undefined4 *)(puVar16 + 0x84);
          *(undefined1 **)(puVar16 + -0x30) = puVar16 + 0x48;
          *(undefined4 *)(puVar16 + -0x34) = 0x27c28f;
          (*pcVar2)();
          *(undefined4 *)(puVar16 + 0x84) = *(undefined4 *)(puVar16 + 0x44);
          param_3 = *(int **)(puVar16 + 0x84);
          *(undefined4 *)(puVar16 + 0x88) = *(undefined4 *)(puVar16 + 0x48);
          *(undefined4 *)(puVar16 + 8) = *(undefined4 *)(puVar16 + 0x88);
        }
        puVar15 = puVar16 + -4;
        param_10 = (byte *)(*(int *)(puVar16 + 0x24) + 1);
        puVar1 = (undefined4 *)(puVar16 + 0xa4);
        puVar16 = puVar16 + -4;
        puVar4 = puVar15;
        if ((byte *)*puVar1 == param_10) break;
      }
      puVar16 = puVar4;
    } while (**(int **)(puVar16 + 0x9c) == 0);
  }
  piVar8 = *(int **)(puVar16 + 0x80);
  iVar17 = *(int *)(puVar16 + 0xc);
  *piVar8 = (int)param_3;
  piVar8[1] = iVar17;
  return;
LAB_0027c2c0:
  puVar16[0x28] = cVar20;
  puVar16[0xc] = bVar7;
  piVar8 = *(int **)(puVar16 + 8);
  iVar17 = *piVar8;
  *(int **)(puVar16 + -0x10) = piVar8;
  pcVar2 = *(code **)(iVar17 + 0x24);
  *(undefined4 *)(puVar16 + -0x14) = 0x27c2d5;
  iVar17 = (*pcVar2)();
  cVar21 = puVar16[0xc];
  piVar9 = (int *)0x0;
  if (iVar17 != -1) {
    cVar21 = '\0';
    piVar9 = piVar8;
  }
  cVar20 = puVar16[0x28];
  *(int **)(puVar16 + 8) = piVar9;
  goto LAB_0027bfb6;
}

