
/* std::istreambuf_iterator<char, std::char_traits<char> > std::num_get<char,
   std::istreambuf_iterator<char, std::char_traits<char> >
   >::_M_extract_int[abi:cxx11]<long>(std::istreambuf_iterator<char, std::char_traits<char> >,
   std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&,
   long&) const */

undefined1  [16]
std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::
_M_extract_int_abi_cxx11_<long>
          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,long param_6,
          uint *param_7,ulong *param_8)

{
  ulong uVar1;
  long *plVar2;
  byte bVar3;
  bool bVar4;
  char cVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  ulong uVar9;
  void *pvVar10;
  __numpunct_cache<char> *this;
  ulong uVar11;
  uint uVar12;
  uint uVar13;
  char cVar14;
  ulong uVar15;
  ulong uVar16;
  bool bVar17;
  uint uVar18;
  byte bVar19;
  long lVar20;
  bool bVar21;
  bool bVar22;
  bool bVar23;
  undefined1 auVar24 [16];
  long *local_c0;
  ulong local_b8;
  undefined1 local_b0;
  ulong local_a8;
  ulong local_a0;
  bool local_6b;
  byte local_6a;
  undefined1 *local_58;
  ulong local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  
  local_b8 = param_3 & 0xffffffff;
  uVar9 = locale::id::_M_id((id *)&numpunct<char>::id);
  plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar9 * 8);
  lVar20 = *plVar2;
  if (lVar20 == 0) {
                    /* try { // try from 00348f25 to 00348f29 has its CatchHandler @ 003492e7 */
    this = (__numpunct_cache<char> *)operator_new(0x90);
    *(undefined4 *)(this + 8) = 0;
    this[0x20] = (__numpunct_cache<char>)0x0;
    *(undefined8 *)(this + 0x10) = 0;
    *(undefined ***)this = &PTR____numpunct_cache_00439298;
    *(undefined8 *)(this + 0x18) = 0;
    *(undefined8 *)(this + 0x28) = 0;
    *(undefined8 *)(this + 0x30) = 0;
    *(undefined8 *)(this + 0x38) = 0;
    *(undefined8 *)(this + 0x40) = 0;
    *(undefined2 *)(this + 0x48) = 0;
    this[0x88] = (__numpunct_cache<char>)0x0;
                    /* try { // try from 00348f92 to 00348f96 has its CatchHandler @ 003492e5 */
    __numpunct_cache<char>::_M_cache(this,(locale *)(param_6 + 0xd0));
    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar9);
    lVar20 = *plVar2;
  }
  uVar13 = *(uint *)(param_6 + 0x18);
  uVar12 = uVar13 & 0x4a;
  iVar6 = 8;
  if (uVar12 != 0x40) {
    iVar6 = 0x10;
    if (uVar12 != 8) {
      iVar6 = 10;
    }
  }
  bVar22 = (uint)param_3 == 0xffffffff;
  bVar21 = param_2 != (long *)0x0 && bVar22;
  bVar17 = bVar22;
  if (bVar21) {
    if ((ulong)param_2[2] < (ulong)param_2[3]) {
      bVar17 = false;
    }
    else {
      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);
      plVar2 = (long *)0x0;
      if (iVar8 != -1) {
        plVar2 = param_2;
      }
      param_2 = plVar2;
      bVar17 = iVar8 == -1 && bVar21;
    }
  }
  uVar13 = uVar13 & 0x4a;
  bVar23 = param_5 == -1;
  bVar4 = param_4 != (long *)0x0 && bVar23;
  local_c0 = param_4;
  bVar21 = bVar23;
  if (bVar4) {
    if ((ulong)param_4[2] < (ulong)param_4[3]) {
      bVar21 = false;
    }
    else {
      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);
      local_c0 = (long *)0x0;
      if (iVar8 != -1) {
        local_c0 = param_4;
      }
      bVar21 = iVar8 == -1 && bVar4;
    }
  }
  if (bVar21 == bVar17) {
    cVar5 = *(char *)(lVar20 + 0x20);
    bVar21 = false;
    uVar12 = 0;
    bVar17 = false;
    local_6b = true;
    iVar8 = 0;
  }
  else {
    if ((param_2 == (long *)0x0) || (!bVar22)) {
      uVar12 = (uint)param_3 & 0xff;
    }
    else if ((byte *)param_2[2] < (byte *)param_2[3]) {
      uVar12 = (uint)*(byte *)param_2[2];
    }
    else {
      uVar12 = (**(code **)(*param_2 + 0x48))(param_2);
      if (uVar12 == 0xffffffff) {
        param_2 = (long *)0x0;
        uVar12 = 0xffffffff;
      }
    }
    cVar5 = *(char *)(lVar20 + 0x20);
    cVar14 = (char)uVar12;
    bVar21 = *(char *)(lVar20 + 0x6e) == cVar14;
    if ((bVar21) || (*(char *)(lVar20 + 0x6f) == cVar14)) {
      if (((cVar5 == '\0') || (*(char *)(lVar20 + 0x49) != cVar14)) &&
         (*(char *)(lVar20 + 0x48) != cVar14)) {
        if ((ulong)param_2[2] < (ulong)param_2[3]) {
          param_2[2] = param_2[2] + 1;
        }
        else {
          (**(code **)(*param_2 + 0x50))(param_2);
        }
        bVar17 = false;
        if ((ulong)param_2[3] <= (ulong)param_2[2]) {
          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);
          bVar17 = iVar8 == -1;
          if (bVar17) {
            param_2 = (long *)0x0;
          }
        }
        bVar4 = local_c0 != (long *)0x0 && bVar23;
        bVar22 = bVar23;
        if (bVar4) {
          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {
            bVar22 = false;
          }
          else {
            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);
            plVar2 = (long *)0x0;
            if (iVar8 != -1) {
              plVar2 = local_c0;
            }
            local_c0 = plVar2;
            bVar22 = iVar8 == -1 && bVar4;
          }
        }
        if (bVar22 == bVar17) {
          cVar5 = *(char *)(lVar20 + 0x20);
          local_6b = true;
          bVar17 = false;
          local_b8 = 0xffffffff;
          iVar8 = 0;
          goto LAB_00348669;
        }
        uVar12 = 0xffffffff;
        if (param_2 != (long *)0x0) {
          if ((byte *)param_2[2] < (byte *)param_2[3]) {
            uVar12 = (uint)*(byte *)param_2[2];
          }
          else {
            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);
            if (uVar12 == 0xffffffff) {
              param_2 = (long *)0x0;
              uVar12 = 0xffffffff;
            }
          }
        }
        cVar5 = *(char *)(lVar20 + 0x20);
        local_b8 = 0xffffffff;
      }
    }
    else {
      bVar21 = false;
    }
    bVar17 = false;
    iVar8 = 0;
    do {
      uVar18 = (uint)local_b8;
      cVar14 = (char)uVar12;
      if (((cVar5 != '\0') && (*(char *)(lVar20 + 0x49) == cVar14)) ||
         (*(char *)(lVar20 + 0x48) == cVar14)) break;
      bVar22 = bVar23;
      if (*(char *)(lVar20 + 0x72) == cVar14) {
        bVar4 = (bool)(iVar6 == 10 | bVar17 ^ 1U);
        if (!bVar4) goto LAB_003485d9;
        bVar17 = iVar6 == 8 || uVar13 == 0;
        if (iVar6 != 8 && uVar13 != 0) {
          iVar8 = iVar8 + 1;
          bVar17 = bVar4;
          goto LAB_0034860e;
        }
        iVar8 = 0;
        iVar6 = 8;
        uVar9 = param_2[2];
        if ((ulong)param_2[3] <= uVar9) goto LAB_003488c0;
LAB_0034861c:
        param_2[2] = uVar9 + 1;
        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;
LAB_00348635:
        bVar4 = false;
        if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348940;
LAB_00348646:
        if (bVar22 == bVar4) {
LAB_0034864f:
          local_b8 = 0xffffffff;
          cVar5 = *(char *)(lVar20 + 0x20);
          local_6b = true;
          goto LAB_00348669;
        }
      }
      else {
        if (!bVar17) break;
LAB_003485d9:
        if ((*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14)) {
          bVar17 = true;
          local_6b = false;
          goto LAB_00348669;
        }
        local_6b = iVar6 == 0x10 || uVar13 == 0;
        if (iVar6 != 0x10 && uVar13 != 0) {
          bVar17 = true;
          goto LAB_00348678;
        }
        iVar8 = 0;
        iVar6 = 0x10;
        bVar17 = false;
LAB_0034860e:
        uVar9 = param_2[2];
        if (uVar9 < (ulong)param_2[3]) goto LAB_0034861c;
LAB_003488c0:
        (**(code **)(*param_2 + 0x50))(param_2);
        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;
LAB_003488f8:
        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);
        bVar4 = iVar7 == -1;
        if (bVar4) {
          param_2 = (long *)0x0;
        }
        if (local_c0 == (long *)0x0 || !bVar23) goto LAB_00348646;
LAB_00348940:
        bVar22 = local_c0 != (long *)0x0;
        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {
          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);
          if (iVar7 == -1) {
            local_c0 = (long *)0x0;
          }
          bVar22 = iVar7 == -1 && (bVar22 && bVar23);
          goto LAB_00348646;
        }
        if (bVar4 == false) goto LAB_0034864f;
      }
      uVar12 = 0xffffffff;
      if (param_2 != (long *)0x0) {
        if ((byte *)param_2[2] < (byte *)param_2[3]) {
          uVar12 = (uint)*(byte *)param_2[2];
        }
        else {
          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);
          if (uVar12 == 0xffffffff) {
            param_2 = (long *)0x0;
            uVar12 = 0xffffffff;
          }
        }
      }
      cVar5 = *(char *)(lVar20 + 0x20);
      local_b8 = 0xffffffff;
      uVar18 = 0xffffffff;
    } while (bVar17);
    local_b8 = (ulong)uVar18;
    local_6b = false;
  }
LAB_00348669:
  local_a0 = 0x16;
  if (iVar6 != 0x10) {
LAB_00348678:
    local_a0 = (ulong)iVar6;
  }
  bVar19 = local_6b;
  local_48 = 0;
  local_58 = &local_48;
  local_50 = 0;
  if (cVar5 != '\0') {
    std::string::reserve((string *)&local_58,0x20);
  }
  uVar16 = (ulong)iVar6;
  bVar3 = *(byte *)(lVar20 + 0x88);
  uVar9 = 0x7fffffffffffffff;
  if (bVar21) {
    uVar9 = 0x8000000000000000;
  }
  uVar15 = local_50;
  if (bVar3 == 0) {
    if (local_6b == false) {
      local_6a = 0;
      local_a8 = 0;
      do {
        cVar5 = (char)uVar12;
        iVar6 = (int)cVar5;
        if (local_a0 < 0xb) {
          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;
LAB_00348742:
          iVar6 = iVar6 + -0x30;
        }
        else {
          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;
          if ((byte)(cVar5 + 0x9fU) < 6) {
            iVar6 = iVar6 + -0x57;
          }
          else {
            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;
            iVar6 = iVar6 + -0x37;
          }
        }
        if (iVar6 == -1) goto LAB_003489c8;
        bVar22 = bVar23;
        if (uVar9 / uVar16 < local_a8) {
          local_6a = 1;
          uVar15 = param_2[2];
          if (uVar15 < (ulong)param_2[3]) goto LAB_00348793;
LAB_00348ac3:
                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */
          (**(code **)(*param_2 + 0x50))(param_2);
          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;
LAB_00348ae0:
          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);
          bVar4 = iVar6 == -1;
          if (bVar4) {
            param_2 = (long *)0x0;
          }
          if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348b10;
LAB_003487c0:
          if (bVar22 == bVar4) goto LAB_003487c9;
        }
        else {
          uVar15 = local_a8 * uVar16;
          local_a8 = (long)iVar6 + uVar15;
          local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;
          uVar15 = param_2[2];
          iVar8 = iVar8 + 1;
          if ((ulong)param_2[3] <= uVar15) goto LAB_00348ac3;
LAB_00348793:
          param_2[2] = uVar15 + 1;
          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;
LAB_003487ac:
          bVar4 = false;
          if (local_c0 == (long *)0x0 || !bVar23) goto LAB_003487c0;
LAB_00348b10:
          bVar22 = local_c0 != (long *)0x0;
          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {
                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */
            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);
            plVar2 = (long *)0x0;
            if (iVar6 != -1) {
              plVar2 = local_c0;
            }
            local_c0 = plVar2;
            bVar22 = iVar6 == -1 && (bVar22 && bVar23);
            goto LAB_003487c0;
          }
          if (bVar4 == false) goto LAB_003487c9;
        }
        if (param_2 == (long *)0x0) {
          uVar12 = 0xffffffff;
        }
        else if ((byte *)param_2[2] < (byte *)param_2[3]) {
          uVar12 = (uint)*(byte *)param_2[2];
        }
        else {
                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */
          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);
          if (uVar12 == 0xffffffff) {
            param_2 = (long *)0x0;
            uVar12 = 0xffffffff;
          }
        }
        local_b8 = 0xffffffff;
      } while( true );
    }
    local_6a = 0;
    local_6b = false;
    local_a8 = 0;
  }
  else {
    if (local_6b == false) {
      local_6a = 0;
      local_a8 = 0;
      do {
        uVar15 = local_50;
        cVar5 = (char)uVar12;
        if ((*(byte *)(lVar20 + 0x20) == 0) || (*(char *)(lVar20 + 0x49) != cVar5)) {
          if ((cVar5 == *(char *)(lVar20 + 0x48)) ||
             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)
             ) goto LAB_003489c8;
          iVar6 = (int)pvVar10 - (int)(void *)(lVar20 + 0x72);
          if (0xf < iVar6) {
            iVar6 = iVar6 + -6;
          }
          if (local_a8 <= uVar9 / uVar16) {
            uVar15 = local_a8 * uVar16;
            local_a8 = (long)iVar6 + uVar15;
            local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;
            iVar8 = iVar8 + 1;
            goto LAB_00348c3c;
          }
          uVar15 = param_2[2];
          local_6a = bVar3;
          if (uVar15 < (ulong)param_2[3]) goto LAB_00348c46;
LAB_00348c9f:
          (**(code **)(*param_2 + 0x50))(param_2);
          local_b8._0_1_ = 0;
          if ((ulong)param_2[3] <= (ulong)param_2[2]) {
LAB_00348cc0:
            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);
            local_b8._0_1_ = 0;
            if (iVar6 == -1) {
              param_2 = (long *)0x0;
              local_b8._0_1_ = bVar3;
            }
          }
        }
        else {
          if (iVar8 == 0) {
            bVar19 = 0;
            local_6b = (bool)*(byte *)(lVar20 + 0x20);
            goto joined_r0x003487e4;
          }
          uVar1 = local_50 + 1;
          if (local_58 == &local_48) {
            uVar11 = 0xf;
          }
          else {
            uVar11 = CONCAT71(uStack_47,local_48);
          }
          if (uVar11 < uVar1) {
            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);
          }
          local_b0 = (undefined1)iVar8;
          iVar8 = 0;
          local_58[uVar15] = local_b0;
          local_58[uVar1] = 0;
          local_50 = uVar1;
LAB_00348c3c:
          uVar15 = param_2[2];
          if ((ulong)param_2[3] <= uVar15) goto LAB_00348c9f;
LAB_00348c46:
          local_b8._0_1_ = 0;
          param_2[2] = uVar15 + 1;
          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;
        }
        bVar4 = local_c0 != (long *)0x0 && bVar23;
        bVar22 = bVar23;
        if (bVar4) {
          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {
            bVar22 = false;
          }
          else {
            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);
            plVar2 = (long *)0x0;
            if (iVar6 != -1) {
              plVar2 = local_c0;
            }
            bVar22 = iVar6 == -1 && bVar4;
            local_c0 = plVar2;
          }
        }
        if ((bool)(byte)local_b8 == bVar22) goto code_r0x00348c77;
        if (param_2 == (long *)0x0) {
          uVar12 = 0xffffffff;
        }
        else if ((byte *)param_2[2] < (byte *)param_2[3]) {
          uVar12 = (uint)*(byte *)param_2[2];
        }
        else {
                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */
          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);
          if (uVar12 == 0xffffffff) {
            param_2 = (long *)0x0;
            uVar12 = 0xffffffff;
          }
        }
        local_b8 = 0xffffffff;
      } while( true );
    }
    local_a8 = 0;
    local_6a = 0;
    local_6b = false;
  }
joined_r0x003487e4:
  if (uVar15 == 0) {
    local_50 = 0;
    if ((bVar17) || (iVar8 != 0)) {
LAB_00348a5d:
      if (local_6b == false) {
        if (local_6a == 0) {
          uVar9 = -local_a8;
          if (!bVar21) {
            uVar9 = local_a8;
          }
          *param_8 = uVar9;
        }
        else {
          uVar9 = 0x8000000000000000;
          if (!bVar21) {
            uVar9 = 0x7fffffffffffffff;
          }
          *param_8 = uVar9;
          *param_7 = 4;
        }
        goto LAB_0034881d;
      }
    }
  }
  else {
    local_b0 = (undefined1)iVar8;
    uVar9 = uVar15 + 1;
    if (local_58 == &local_48) {
      uVar16 = 0xf;
    }
    else {
      uVar16 = CONCAT71(uStack_47,local_48);
    }
    if (uVar16 < uVar9) {
      local_50 = uVar15;
      std::string::_M_mutate((string *)&local_58,uVar15,0,(char *)0x0,1);
    }
    local_58[uVar15] = local_b0;
    local_58[uVar9] = 0;
    local_50 = uVar9;
    cVar5 = __verify_grouping(*(char **)(lVar20 + 0x10),*(ulong *)(lVar20 + 0x18),
                              (string *)&local_58);
    if (cVar5 == '\0') {
      *param_7 = 4;
    }
    if (((iVar8 != 0) || (bVar17)) || (local_50 != 0)) goto LAB_00348a5d;
  }
  *param_8 = 0;
  *param_7 = 4;
LAB_0034881d:
  if (bVar19 != 0) {
    *param_7 = *param_7 | 2;
  }
  if (local_58 != &local_48) {
    operator_delete(local_58);
  }
  auVar24._8_8_ = param_3 & 0xffffffff00000000 | local_b8;
  auVar24._0_8_ = param_2;
  return auVar24;
code_r0x00348c77:
  local_b8 = 0xffffffff;
  bVar19 = bVar3;
  uVar15 = local_50;
  goto joined_r0x003487e4;
LAB_003487c9:
  local_b8 = 0xffffffff;
  bVar19 = 1;
  uVar15 = local_50;
  goto joined_r0x003487e4;
LAB_003489c8:
  bVar19 = 0;
  uVar15 = local_50;
  goto joined_r0x003487e4;
}



undefined1  [16]
FUN_00348410(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,long param_6,
            uint *param_7,ulong *param_8)

{
  ulong uVar1;
  long *plVar2;
  byte bVar3;
  bool bVar4;
  char cVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  long lVar9;
  ulong uVar10;
  void *pvVar11;
  undefined8 *puVar12;
  ulong uVar13;
  uint uVar14;
  uint uVar15;
  char cVar16;
  ulong uVar17;
  ulong uVar18;
  bool bVar19;
  uint uVar20;
  byte bVar21;
  long lVar22;
  bool bVar23;
  bool bVar24;
  bool bVar25;
  undefined1 auVar26 [16];
  long *local_c0;
  ulong local_b8;
  undefined1 local_b0;
  ulong local_a8;
  ulong local_a0;
  bool local_6b;
  byte local_6a;
  undefined1 *local_58;
  ulong local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  
  local_b8 = param_3 & 0xffffffff;
  lVar9 = FUN_002dd3b0(&DAT_0044bd90);
  plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8);
  lVar22 = *plVar2;
  if (lVar22 == 0) {
                    /* try { // try from 00348f25 to 00348f29 has its CatchHandler @ 003492e7 */
    puVar12 = (undefined8 *)FUN_002d94a0(0x90);
    *(undefined4 *)(puVar12 + 1) = 0;
    *(undefined1 *)(puVar12 + 4) = 0;
    puVar12[2] = 0;
    *puVar12 = &PTR_FUN_00439298;
    puVar12[3] = 0;
    puVar12[5] = 0;
    puVar12[6] = 0;
    puVar12[7] = 0;
    puVar12[8] = 0;
    *(undefined2 *)(puVar12 + 9) = 0;
    *(undefined1 *)(puVar12 + 0x11) = 0;
                    /* try { // try from 00348f92 to 00348f96 has its CatchHandler @ 003492e5 */
    FUN_002ece10(puVar12,param_6 + 0xd0);
    FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9);
    lVar22 = *plVar2;
  }
  uVar15 = *(uint *)(param_6 + 0x18);
  uVar14 = uVar15 & 0x4a;
  iVar6 = 8;
  if (uVar14 != 0x40) {
    iVar6 = 0x10;
    if (uVar14 != 8) {
      iVar6 = 10;
    }
  }
  bVar24 = (uint)param_3 == 0xffffffff;
  bVar23 = param_2 != (long *)0x0 && bVar24;
  bVar19 = bVar24;
  if (bVar23) {
    if ((ulong)param_2[2] < (ulong)param_2[3]) {
      bVar19 = false;
    }
    else {
      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);
      plVar2 = (long *)0x0;
      if (iVar8 != -1) {
        plVar2 = param_2;
      }
      param_2 = plVar2;
      bVar19 = iVar8 == -1 && bVar23;
    }
  }
  uVar15 = uVar15 & 0x4a;
  bVar25 = param_5 == -1;
  bVar4 = param_4 != (long *)0x0 && bVar25;
  local_c0 = param_4;
  bVar23 = bVar25;
  if (bVar4) {
    if ((ulong)param_4[2] < (ulong)param_4[3]) {
      bVar23 = false;
    }
    else {
      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);
      local_c0 = (long *)0x0;
      if (iVar8 != -1) {
        local_c0 = param_4;
      }
      bVar23 = iVar8 == -1 && bVar4;
    }
  }
  if (bVar23 == bVar19) {
    cVar5 = *(char *)(lVar22 + 0x20);
    bVar23 = false;
    uVar14 = 0;
    bVar19 = false;
    local_6b = true;
    iVar8 = 0;
  }
  else {
    if ((param_2 == (long *)0x0) || (!bVar24)) {
      uVar14 = (uint)param_3 & 0xff;
    }
    else if ((byte *)param_2[2] < (byte *)param_2[3]) {
      uVar14 = (uint)*(byte *)param_2[2];
    }
    else {
      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);
      if (uVar14 == 0xffffffff) {
        param_2 = (long *)0x0;
        uVar14 = 0xffffffff;
      }
    }
    cVar5 = *(char *)(lVar22 + 0x20);
    cVar16 = (char)uVar14;
    bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;
    if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {
      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&
         (*(char *)(lVar22 + 0x48) != cVar16)) {
        if ((ulong)param_2[2] < (ulong)param_2[3]) {
          param_2[2] = param_2[2] + 1;
        }
        else {
          (**(code **)(*param_2 + 0x50))(param_2);
        }
        bVar19 = false;
        if ((ulong)param_2[3] <= (ulong)param_2[2]) {
          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);
          bVar19 = iVar8 == -1;
          if (bVar19) {
            param_2 = (long *)0x0;
          }
        }
        bVar4 = local_c0 != (long *)0x0 && bVar25;
        bVar24 = bVar25;
        if (bVar4) {
          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {
            bVar24 = false;
          }
          else {
            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);
            plVar2 = (long *)0x0;
            if (iVar8 != -1) {
              plVar2 = local_c0;
            }
            local_c0 = plVar2;
            bVar24 = iVar8 == -1 && bVar4;
          }
        }
        if (bVar24 == bVar19) {
          cVar5 = *(char *)(lVar22 + 0x20);
          local_6b = true;
          bVar19 = false;
          local_b8 = 0xffffffff;
          iVar8 = 0;
          goto LAB_00348669;
        }
        uVar14 = 0xffffffff;
        if (param_2 != (long *)0x0) {
          if ((byte *)param_2[2] < (byte *)param_2[3]) {
            uVar14 = (uint)*(byte *)param_2[2];
          }
          else {
            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);
            if (uVar14 == 0xffffffff) {
              param_2 = (long *)0x0;
              uVar14 = 0xffffffff;
            }
          }
        }
        cVar5 = *(char *)(lVar22 + 0x20);
        local_b8 = 0xffffffff;
      }
    }
    else {
      bVar23 = false;
    }
    bVar19 = false;
    iVar8 = 0;
    do {
      uVar20 = (uint)local_b8;
      cVar16 = (char)uVar14;
      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||
         (*(char *)(lVar22 + 0x48) == cVar16)) break;
      bVar24 = bVar25;
      if (*(char *)(lVar22 + 0x72) == cVar16) {
        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);
        if (!bVar4) goto LAB_003485d9;
        bVar19 = iVar6 == 8 || uVar15 == 0;
        if (iVar6 != 8 && uVar15 != 0) {
          iVar8 = iVar8 + 1;
          bVar19 = bVar4;
          goto LAB_0034860e;
        }
        iVar8 = 0;
        iVar6 = 8;
        uVar10 = param_2[2];
        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;
LAB_0034861c:
        param_2[2] = uVar10 + 1;
        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;
LAB_00348635:
        bVar4 = false;
        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;
LAB_00348646:
        if (bVar24 == bVar4) {
LAB_0034864f:
          local_b8 = 0xffffffff;
          cVar5 = *(char *)(lVar22 + 0x20);
          local_6b = true;
          goto LAB_00348669;
        }
      }
      else {
        if (!bVar19) break;
LAB_003485d9:
        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {
          bVar19 = true;
          local_6b = false;
          goto LAB_00348669;
        }
        local_6b = iVar6 == 0x10 || uVar15 == 0;
        if (iVar6 != 0x10 && uVar15 != 0) {
          bVar19 = true;
          goto LAB_00348678;
        }
        iVar8 = 0;
        iVar6 = 0x10;
        bVar19 = false;
LAB_0034860e:
        uVar10 = param_2[2];
        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;
LAB_003488c0:
        (**(code **)(*param_2 + 0x50))(param_2);
        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;
LAB_003488f8:
        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);
        bVar4 = iVar7 == -1;
        if (bVar4) {
          param_2 = (long *)0x0;
        }
        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;
LAB_00348940:
        bVar24 = local_c0 != (long *)0x0;
        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {
          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);
          if (iVar7 == -1) {
            local_c0 = (long *)0x0;
          }
          bVar24 = iVar7 == -1 && (bVar24 && bVar25);
          goto LAB_00348646;
        }
        if (bVar4 == false) goto LAB_0034864f;
      }
      uVar14 = 0xffffffff;
      if (param_2 != (long *)0x0) {
        if ((byte *)param_2[2] < (byte *)param_2[3]) {
          uVar14 = (uint)*(byte *)param_2[2];
        }
        else {
          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);
          if (uVar14 == 0xffffffff) {
            param_2 = (long *)0x0;
            uVar14 = 0xffffffff;
          }
        }
      }
      cVar5 = *(char *)(lVar22 + 0x20);
      local_b8 = 0xffffffff;
      uVar20 = 0xffffffff;
    } while (bVar19);
    local_b8 = (ulong)uVar20;
    local_6b = false;
  }
LAB_00348669:
  local_a0 = 0x16;
  if (iVar6 != 0x10) {
LAB_00348678:
    local_a0 = (ulong)iVar6;
  }
  bVar21 = local_6b;
  local_48 = 0;
  local_58 = &local_48;
  local_50 = 0;
  if (cVar5 != '\0') {
    FUN_002e1e10(&local_58,0x20);
  }
  uVar18 = (ulong)iVar6;
  bVar3 = *(byte *)(lVar22 + 0x88);
  uVar10 = 0x7fffffffffffffff;
  if (bVar23) {
    uVar10 = 0x8000000000000000;
  }
  uVar17 = local_50;
  if (bVar3 == 0) {
    if (local_6b == false) {
      local_6a = 0;
      local_a8 = 0;
      do {
        cVar5 = (char)uVar14;
        iVar6 = (int)cVar5;
        if (local_a0 < 0xb) {
          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;
LAB_00348742:
          iVar6 = iVar6 + -0x30;
        }
        else {
          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;
          if ((byte)(cVar5 + 0x9fU) < 6) {
            iVar6 = iVar6 + -0x57;
          }
          else {
            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;
            iVar6 = iVar6 + -0x37;
          }
        }
        if (iVar6 == -1) goto LAB_003489c8;
        bVar24 = bVar25;
        if (uVar10 / uVar18 < local_a8) {
          local_6a = 1;
          uVar17 = param_2[2];
          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;
LAB_00348ac3:
                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */
          (**(code **)(*param_2 + 0x50))(param_2);
          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;
LAB_00348ae0:
          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);
          bVar4 = iVar6 == -1;
          if (bVar4) {
            param_2 = (long *)0x0;
          }
          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;
LAB_003487c0:
          if (bVar24 == bVar4) goto LAB_003487c9;
        }
        else {
          uVar17 = local_a8 * uVar18;
          local_a8 = (long)iVar6 + uVar17;
          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;
          uVar17 = param_2[2];
          iVar8 = iVar8 + 1;
          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;
LAB_00348793:
          param_2[2] = uVar17 + 1;
          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;
LAB_003487ac:
          bVar4 = false;
          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;
LAB_00348b10:
          bVar24 = local_c0 != (long *)0x0;
          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {
                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */
            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);
            plVar2 = (long *)0x0;
            if (iVar6 != -1) {
              plVar2 = local_c0;
            }
            local_c0 = plVar2;
            bVar24 = iVar6 == -1 && (bVar24 && bVar25);
            goto LAB_003487c0;
          }
          if (bVar4 == false) goto LAB_003487c9;
        }
        if (param_2 == (long *)0x0) {
          uVar14 = 0xffffffff;
        }
        else if ((byte *)param_2[2] < (byte *)param_2[3]) {
          uVar14 = (uint)*(byte *)param_2[2];
        }
        else {
                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */
          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);
          if (uVar14 == 0xffffffff) {
            param_2 = (long *)0x0;
            uVar14 = 0xffffffff;
          }
        }
        local_b8 = 0xffffffff;
      } while( true );
    }
    local_6a = 0;
    local_6b = false;
    local_a8 = 0;
  }
  else {
    if (local_6b == false) {
      local_6a = 0;
      local_a8 = 0;
      do {
        uVar17 = local_50;
        cVar5 = (char)uVar14;
        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {
          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||
             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)
             ) goto LAB_003489c8;
          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);
          if (0xf < iVar6) {
            iVar6 = iVar6 + -6;
          }
          if (local_a8 <= uVar10 / uVar18) {
            uVar17 = local_a8 * uVar18;
            local_a8 = (long)iVar6 + uVar17;
            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;
            iVar8 = iVar8 + 1;
            goto LAB_00348c3c;
          }
          uVar17 = param_2[2];
          local_6a = bVar3;
          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;
LAB_00348c9f:
          (**(code **)(*param_2 + 0x50))(param_2);
          local_b8._0_1_ = 0;
          if ((ulong)param_2[3] <= (ulong)param_2[2]) {
LAB_00348cc0:
            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);
            local_b8._0_1_ = 0;
            if (iVar6 == -1) {
              param_2 = (long *)0x0;
              local_b8._0_1_ = bVar3;
            }
          }
        }
        else {
          if (iVar8 == 0) {
            bVar21 = 0;
            local_6b = (bool)*(byte *)(lVar22 + 0x20);
            goto joined_r0x003487e4;
          }
          uVar1 = local_50 + 1;
          if (local_58 == &local_48) {
            uVar13 = 0xf;
          }
          else {
            uVar13 = CONCAT71(uStack_47,local_48);
          }
          if (uVar13 < uVar1) {
            FUN_002e1960(&local_58,local_50,0,0,1);
          }
          local_b0 = (undefined1)iVar8;
          iVar8 = 0;
          local_58[uVar17] = local_b0;
          local_58[uVar1] = 0;
          local_50 = uVar1;
LAB_00348c3c:
          uVar17 = param_2[2];
          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;
LAB_00348c46:
          local_b8._0_1_ = 0;
          param_2[2] = uVar17 + 1;
          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;
        }
        bVar4 = local_c0 != (long *)0x0 && bVar25;
        bVar24 = bVar25;
        if (bVar4) {
          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {
            bVar24 = false;
          }
          else {
            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);
            plVar2 = (long *)0x0;
            if (iVar6 != -1) {
              plVar2 = local_c0;
            }
            bVar24 = iVar6 == -1 && bVar4;
            local_c0 = plVar2;
          }
        }
        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;
        if (param_2 == (long *)0x0) {
          uVar14 = 0xffffffff;
        }
        else if ((byte *)param_2[2] < (byte *)param_2[3]) {
          uVar14 = (uint)*(byte *)param_2[2];
        }
        else {
                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */
          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);
          if (uVar14 == 0xffffffff) {
            param_2 = (long *)0x0;
            uVar14 = 0xffffffff;
          }
        }
        local_b8 = 0xffffffff;
      } while( true );
    }
    local_a8 = 0;
    local_6a = 0;
    local_6b = false;
  }
joined_r0x003487e4:
  if (uVar17 == 0) {
    local_50 = 0;
    if ((bVar19) || (iVar8 != 0)) {
LAB_00348a5d:
      if (local_6b == false) {
        if (local_6a == 0) {
          uVar10 = -local_a8;
          if (!bVar23) {
            uVar10 = local_a8;
          }
          *param_8 = uVar10;
        }
        else {
          uVar10 = 0x8000000000000000;
          if (!bVar23) {
            uVar10 = 0x7fffffffffffffff;
          }
          *param_8 = uVar10;
          *param_7 = 4;
        }
        goto LAB_0034881d;
      }
    }
  }
  else {
    local_b0 = (undefined1)iVar8;
    uVar10 = uVar17 + 1;
    if (local_58 == &local_48) {
      uVar18 = 0xf;
    }
    else {
      uVar18 = CONCAT71(uStack_47,local_48);
    }
    if (uVar18 < uVar10) {
      local_50 = uVar17;
      FUN_002e1960(&local_58,uVar17,0,0,1);
    }
    local_58[uVar17] = local_b0;
    local_58[uVar10] = 0;
    local_50 = uVar10;
    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);
    if (cVar5 == '\0') {
      *param_7 = 4;
    }
    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;
  }
  *param_8 = 0;
  *param_7 = 4;
LAB_0034881d:
  if (bVar21 != 0) {
    *param_7 = *param_7 | 2;
  }
  if (local_58 != &local_48) {
    FUN_002dac70();
  }
  auVar26._8_8_ = param_3 & 0xffffffff00000000 | local_b8;
  auVar26._0_8_ = param_2;
  return auVar26;
code_r0x00348c77:
  local_b8 = 0xffffffff;
  bVar21 = bVar3;
  uVar17 = local_50;
  goto joined_r0x003487e4;
LAB_003487c9:
  local_b8 = 0xffffffff;
  bVar21 = 1;
  uVar17 = local_50;
  goto joined_r0x003487e4;
LAB_003489c8:
  bVar21 = 0;
  uVar17 = local_50;
  goto joined_r0x003487e4;
}


PUSH R15
MOV R15,RSI
PUSH R14
PUSH R13
PUSH R12
MOV R12,R9
PUSH RBP
MOV RBP,RSI
PUSH RBX
MOV RBX,RCX
SUB RSP,0x98
LEA RDI,[0x44bd90]
MOV qword ptr [RSP + 0x60],RDX
MOV qword ptr [RSP + 0x18],R8
MOV dword ptr [RSP + 0x10],EDX
MOV qword ptr [RSP + 0x8],RCX
CALL 0x002dd3b0
MOV RSI,RAX
MOV qword ptr [RSP + 0x20],RAX
MOV RAX,qword ptr [R12 + 0xd0]
MOV RAX,qword ptr [RAX + 0x18]
LEA R14,[RAX + RSI*0x8]
MOV R13,qword ptr [R14]
TEST R13,R13
JZ 0x00348f20
MOV ECX,dword ptr [R12 + 0x18]
MOV R12D,0x8
AND ECX,0x4a
CMP ECX,0x40
JZ 0x00348495
CMP ECX,0x8
MOV R12D,0x10
MOV EAX,0xa
CMOVNZ R12D,EAX
CMP dword ptr [RSP + 0x10],-0x1
SETZ DL
TEST RBP,RBP
SETNZ R14B
AND R14B,DL
JNZ 0x00348e50
MOV R14D,EDX
CMP dword ptr [RSP + 0x18],-0x1
SETZ BPL
TEST RBX,RBX
SETNZ AL
AND AL,BPL
MOV R8D,EAX
JNZ 0x00348e30
MOV R8D,EBP
CMP R8B,R14B
JZ 0x00348db8
TEST R15,R15
JZ 0x003484e4
TEST DL,DL
JNZ 0x00348ec8
MOVZX EBX,byte ptr [RSP + 0x10]
MOVZX EAX,byte ptr [R13 + 0x6e]
MOVZX EDI,byte ptr [R13 + 0x20]
CMP AL,BL
SETZ byte ptr [RSP + 0x5f]
JZ 0x00348506
CMP byte ptr [R13 + 0x6f],BL
JNZ 0x00348ee0
TEST DIL,DIL
JNZ 0x00348580
CMP byte ptr [R13 + 0x48],BL
JZ 0x00348590
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JNC 0x00349163
ADD RAX,0x1
MOV qword ptr [R15 + 0x10],RAX
XOR ESI,ESI
MOV RAX,qword ptr [R15 + 0x18]
CMP qword ptr [R15 + 0x10],RAX
JNC 0x003492ba
CMP qword ptr [RSP + 0x8],0x0
SETNZ R14B
AND R14B,BPL
JNZ 0x003490a8
MOV R14D,EBP
CMP R14B,SIL
JNZ 0x00348eea
MOVZX EDI,byte ptr [R13 + 0x20]
MOV byte ptr [RSP + 0x5d],0x1
XOR R14D,R14D
MOV dword ptr [RSP + 0x10],0xffffffff
MOV dword ptr [RSP + 0x18],0x0
JMP 0x00348669
CMP byte ptr [R13 + 0x49],BL
JNZ 0x0034850b
NOP word ptr CS:[RAX + RAX*0x1]
XOR R14D,R14D
MOV R9D,dword ptr [RSP + 0x10]
MOV ESI,0xffffffff
MOV dword ptr [RSP + 0x18],0x0
MOV R8D,R14D
MOV R14,qword ptr [RSP + 0x8]
TEST DIL,DIL
JZ 0x003485bc
CMP byte ptr [R13 + 0x49],BL
JZ 0x00348988
CMP byte ptr [R13 + 0x48],BL
JZ 0x00348988
CMP byte ptr [R13 + 0x72],BL
JZ 0x00348870
TEST R8B,R8B
JZ 0x00348988
CMP byte ptr [R13 + 0x70],BL
JZ 0x003485e9
CMP byte ptr [R13 + 0x71],BL
JNZ 0x00349010
CMP R12D,0x10
SETZ AL
TEST ECX,ECX
SETZ DL
OR AL,DL
JZ 0x0034904b
MOV dword ptr [RSP + 0x18],0x0
XOR R8D,R8D
MOV R12D,0x10
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JNC 0x003488c0
ADD RAX,0x1
XOR R9D,R9D
MOV qword ptr [R15 + 0x10],RAX
MOV RAX,qword ptr [R15 + 0x18]
CMP qword ptr [R15 + 0x10],RAX
JNC 0x003488f8
TEST R14,R14
SETNZ DL
AND DL,BPL
JNZ 0x00348940
MOV EDX,EBP
CMP DL,R9B
JNZ 0x00348959
MOV dword ptr [RSP + 0x10],0xffffffff
MOVZX EDI,byte ptr [R13 + 0x20]
MOV byte ptr [RSP + 0x5d],0x1
MOV qword ptr [RSP + 0x8],R14
MOV R14D,R8D
MOV qword ptr [RSP + 0x28],0x16
CMP R12D,0x10
JZ 0x00348680
MOVSXD RAX,R12D
MOV qword ptr [RSP + 0x28],RAX
LEA RAX,[RSP + 0x70]
MOV byte ptr [RSP + 0x80],0x0
MOV qword ptr [RSP + 0x50],RAX
LEA RAX,[RSP + 0x80]
MOV qword ptr [RSP + 0x70],RAX
MOV qword ptr [RSP + 0x78],0x0
TEST DIL,DIL
JNZ 0x00348da0
CMP byte ptr [RSP + 0x5f],0x0
MOVSXD RDI,R12D
MOVZX R12D,byte ptr [R13 + 0x88]
MOV RDX,-0x8000000000000000
MOV RAX,0x7fffffffffffffff
MOV qword ptr [RSP + 0x38],RDI
CMOVNZ RAX,RDX
XOR EDX,EDX
MOV qword ptr [RSP + 0x40],RAX
DIV RDI
MOV qword ptr [RSP + 0x30],RAX
TEST R12B,R12B
JNZ 0x00348b90
CMP byte ptr [RSP + 0x5d],0x0
JNZ 0x0034921f
MOVZX EAX,byte ptr [RSP + 0x28]
MOV byte ptr [RSP + 0x5e],0x0
MOV qword ptr [RSP + 0x20],0x0
ADD EAX,0x30
MOV byte ptr [RSP + 0x48],AL
NOP dword ptr [RAX + RAX*0x1]
CMP qword ptr [RSP + 0x28],0xa
MOVSX EAX,BL
JA 0x003489a0
CMP BL,0x2f
JLE 0x003489c8
CMP byte ptr [RSP + 0x48],BL
JLE 0x003489c8
SUB EAX,0x30
CMP EAX,-0x1
JZ 0x003489c8
MOV RSI,qword ptr [RSP + 0x20]
CMP qword ptr [RSP + 0x30],RSI
JC 0x00348ab0
IMUL RSI,qword ptr [RSP + 0x38]
MOV RCX,qword ptr [RSP + 0x40]
CDQE
SUB RCX,RAX
CMP RCX,RSI
SETC CL
ADD RAX,RSI
OR byte ptr [RSP + 0x5e],CL
MOV qword ptr [RSP + 0x20],RAX
MOV RAX,qword ptr [R15 + 0x10]
ADD dword ptr [RSP + 0x18],0x1
CMP RAX,qword ptr [R15 + 0x18]
JNC 0x00348ac3
ADD RAX,0x1
XOR R12D,R12D
MOV qword ptr [R15 + 0x10],RAX
MOV RAX,qword ptr [R15 + 0x18]
CMP qword ptr [R15 + 0x10],RAX
JNC 0x00348ae0
CMP qword ptr [RSP + 0x8],0x0
SETNZ BL
AND BL,BPL
JNZ 0x00348b10
MOV EBX,EBP
CMP BL,R12B
JNZ 0x00348b2e
MOV RBX,qword ptr [RSP + 0x78]
MOV dword ptr [RSP + 0x10],0xffffffff
MOV R12D,0x1
MOV RDI,qword ptr [RSP + 0x70]
TEST RBX,RBX
JNZ 0x003489de
CMP R14B,0x1
JZ 0x00348a5d
MOV EAX,dword ptr [RSP + 0x18]
TEST EAX,EAX
JNZ 0x00348a5d
MOV RAX,qword ptr [RSP + 0xd8]
MOV qword ptr [RAX],0x0
MOV RAX,qword ptr [RSP + 0xd0]
MOV dword ptr [RAX],0x4
TEST R12B,R12B
JZ 0x0034882d
MOV RAX,qword ptr [RSP + 0xd0]
OR dword ptr [RAX],0x2
MOV RAX,qword ptr [RSP + 0x50]
MOV EDX,dword ptr [RSP + 0x10]
MOV RBX,-0x100000000
AND RBX,qword ptr [RSP + 0x60]
ADD RAX,0x10
OR RBX,RDX
CMP RDI,RAX
JZ 0x00348856
CALL 0x002dac70
ADD RSP,0x98
MOV RAX,R15
MOV RDX,RBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
XOR R8D,0x1
CMP R12D,0xa
SETZ AL
OR AL,R8B
JZ 0x003485d9
CMP R12D,0x8
SETZ R8B
TEST ECX,ECX
SETZ DL
OR R8B,DL
JZ 0x00348b80
MOV dword ptr [RSP + 0x18],0x0
MOV R12D,0x8
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JC 0x0034861c
NOP word ptr CS:[RAX + RAX*0x1]
MOV RAX,qword ptr [R15]
MOV dword ptr [RSP + 0x10],ECX
MOV RDI,R15
MOV byte ptr [RSP + 0x8],R8B
CALL qword ptr [RAX + 0x50]
MOV ECX,dword ptr [RSP + 0x10]
MOVZX R8D,byte ptr [RSP + 0x8]
XOR R9D,R9D
MOV ESI,0xffffffff
MOV RAX,qword ptr [R15 + 0x18]
CMP qword ptr [R15 + 0x10],RAX
JC 0x00348635
NOP word ptr [RAX + RAX*0x1]
MOV RAX,qword ptr [R15]
MOV dword ptr [RSP + 0x10],ECX
MOV RDI,R15
MOV byte ptr [RSP + 0x8],R8B
CALL qword ptr [RAX + 0x48]
MOV ECX,dword ptr [RSP + 0x10]
MOVZX R8D,byte ptr [RSP + 0x8]
MOV ESI,0xffffffff
CMP EAX,-0x1
MOV EAX,0x0
SETZ R9B
CMOVZ R15,RAX
TEST R14,R14
SETNZ DL
AND DL,BPL
JZ 0x00348644
NOP dword ptr [RAX + RAX*0x1]
MOV RAX,qword ptr [R14 + 0x18]
CMP qword ptr [R14 + 0x10],RAX
JNC 0x00348de0
XOR EDX,EDX
CMP DL,R9B
JZ 0x0034864f
MOV EBX,0xffffffff
TEST R15,R15
JZ 0x00348974
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JNC 0x00349064
MOVZX EBX,byte ptr [RAX]
MOVZX EDI,byte ptr [R13 + 0x20]
MOV R9D,ESI
TEST R8B,R8B
JNZ 0x003485ad
NOP dword ptr [RAX]
MOV qword ptr [RSP + 0x8],R14
MOV R14D,R8D
MOV dword ptr [RSP + 0x10],R9D
MOV byte ptr [RSP + 0x5d],0x0
JMP 0x00348669
LEA EDX,[RBX + -0x30]
CMP DL,0x9
JBE 0x00348742
LEA EDX,[RBX + -0x61]
CMP DL,0x5
JA 0x00348b58
SUB EAX,0x57
CMP EAX,-0x1
JNZ 0x0034874e
NOP dword ptr [RAX]
MOV RBX,qword ptr [RSP + 0x78]
MOV RDI,qword ptr [RSP + 0x70]
XOR R12D,R12D
TEST RBX,RBX
JZ 0x003487ea
MOVZX EAX,byte ptr [RSP + 0x18]
LEA RBP,[RBX + 0x1]
MOV byte ptr [RSP + 0x8],AL
MOV RAX,qword ptr [RSP + 0x50]
ADD RAX,0x10
CMP RDI,RAX
JZ 0x003490c3
MOV RAX,qword ptr [RSP + 0x80]
CMP RBP,RAX
JA 0x0034902a
MOVZX EAX,byte ptr [RSP + 0x8]
MOV RDX,qword ptr [RSP + 0x50]
MOV byte ptr [RDI + RBX*0x1],AL
MOV RAX,qword ptr [RSP + 0x70]
MOV qword ptr [RSP + 0x78],RBP
MOV byte ptr [RAX + RBP*0x1],0x0
MOV RSI,qword ptr [R13 + 0x18]
MOV RDI,qword ptr [R13 + 0x10]
CALL 0x003653d0
TEST AL,AL
JZ 0x00348eb0
MOV EDX,dword ptr [RSP + 0x18]
MOV RDI,qword ptr [RSP + 0x70]
TEST EDX,EDX
JNZ 0x00348a5d
CMP R14B,0x1
JZ 0x00348a5d
CMP qword ptr [RSP + 0x78],0x0
JZ 0x00348800
CMP byte ptr [RSP + 0x5d],0x0
JNZ 0x00348800
CMP byte ptr [RSP + 0x5e],0x0
JZ 0x00348e88
CMP byte ptr [RSP + 0x5f],0x0
MOV RCX,qword ptr [RSP + 0xd8]
MOV RAX,-0x8000000000000000
MOV RDX,0x7fffffffffffffff
CMOVZ RAX,RDX
MOV qword ptr [RCX],RAX
MOV RAX,qword ptr [RSP + 0xd0]
MOV dword ptr [RAX],0x4
JMP 0x0034881d
MOV byte ptr [RSP + 0x5e],0x1
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JC 0x00348793
MOV RAX,qword ptr [R15]
MOV RDI,R15
CALL qword ptr [RAX + 0x50]
XOR R12D,R12D
MOV RAX,qword ptr [R15 + 0x18]
CMP qword ptr [R15 + 0x10],RAX
JC 0x003487ac
NOP dword ptr [RAX]
MOV RAX,qword ptr [R15]
MOV RDI,R15
CALL qword ptr [RAX + 0x48]
CMP EAX,-0x1
MOV EAX,0x0
SETZ R12B
CMOVZ R15,RAX
CMP qword ptr [RSP + 0x8],0x0
SETNZ BL
AND BL,BPL
JZ 0x003487be
NOP dword ptr [RAX + RAX*0x1]
MOV RAX,qword ptr [RSP + 0x8]
MOV RDI,qword ptr [RAX + 0x18]
CMP qword ptr [RAX + 0x10],RDI
JNC 0x00348fb8
XOR EBX,EBX
CMP BL,R12B
JZ 0x003487c9
TEST R15,R15
JZ 0x00348b70
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JNC 0x00349118
MOVZX EBX,byte ptr [RAX]
MOV dword ptr [RSP + 0x10],0xffffffff
JMP 0x00348720
SUB EBX,0x41
CMP BL,0x5
JA 0x003489c8
SUB EAX,0x37
JMP 0x00348745
MOV EBX,0xffffffff
JMP 0x00348b44
ADD dword ptr [RSP + 0x18],0x1
MOV R8D,EAX
JMP 0x0034860e
CMP byte ptr [RSP + 0x5d],0x0
JNZ 0x00349247
LEA RAX,[R13 + 0x72]
MOV byte ptr [RSP + 0x5e],0x0
MOV qword ptr [RSP + 0x48],RAX
MOV RAX,qword ptr [RSP + 0x50]
MOV qword ptr [RSP + 0x20],0x0
ADD RAX,0x10
MOV qword ptr [RSP + 0x68],RAX
MOVZX EAX,byte ptr [R13 + 0x20]
TEST AL,AL
JZ 0x00348bd3
CMP byte ptr [R13 + 0x49],BL
JZ 0x00348d30
CMP BL,byte ptr [R13 + 0x48]
JZ 0x003489c8
MOV RDX,qword ptr [RSP + 0x28]
MOV RDI,qword ptr [RSP + 0x48]
MOVSX ESI,BL
CALL 0x001471b0
TEST RAX,RAX
JZ 0x003489c8
SUB RAX,qword ptr [RSP + 0x48]
MOV RCX,qword ptr [RSP + 0x20]
LEA EDX,[RAX + -0x6]
CMP EAX,0xf
CMOVG EAX,EDX
CMP qword ptr [RSP + 0x30],RCX
JC 0x00348c90
IMUL RCX,qword ptr [RSP + 0x38]
CDQE
MOV RDX,RCX
MOV RCX,qword ptr [RSP + 0x40]
SUB RCX,RAX
CMP RCX,RDX
SETC CL
ADD RAX,RDX
OR byte ptr [RSP + 0x5e],CL
ADD dword ptr [RSP + 0x18],0x1
MOV qword ptr [RSP + 0x20],RAX
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JNC 0x00348c9f
ADD RAX,0x1
MOV byte ptr [RSP + 0x10],0x0
MOV qword ptr [R15 + 0x10],RAX
MOV RAX,qword ptr [R15 + 0x18]
CMP qword ptr [R15 + 0x10],RAX
JNC 0x00348cc0
CMP qword ptr [RSP + 0x8],0x0
SETNZ BL
AND BL,BPL
JNZ 0x00348d10
MOV EBX,EBP
CMP byte ptr [RSP + 0x10],BL
JNZ 0x00348cf0
MOV RBX,qword ptr [RSP + 0x78]
MOV RDI,qword ptr [RSP + 0x70]
MOV dword ptr [RSP + 0x10],0xffffffff
JMP 0x003487e1
MOV byte ptr [RSP + 0x5e],R12B
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JC 0x00348c46
MOV RAX,qword ptr [R15]
MOV RDI,R15
CALL qword ptr [RAX + 0x50]
MOV byte ptr [RSP + 0x10],0x0
MOV RAX,qword ptr [R15 + 0x18]
CMP qword ptr [R15 + 0x10],RAX
JC 0x00348c5d
NOP word ptr [RAX + RAX*0x1]
MOV RAX,qword ptr [R15]
MOV RDI,R15
CALL qword ptr [RAX + 0x48]
CMP EAX,-0x1
MOV EDX,0x0
MOV EAX,0x0
CMOVZ EDX,R12D
CMOVZ R15,RAX
MOV byte ptr [RSP + 0x10],DL
JMP 0x00348c5d
TEST R15,R15
JZ 0x00348e70
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JNC 0x003490cd
MOVZX EBX,byte ptr [RAX]
JMP 0x00348e75
MOV RAX,qword ptr [RSP + 0x8]
MOV RSI,qword ptr [RAX + 0x18]
CMP qword ptr [RAX + 0x10],RSI
JNC 0x0034913a
XOR EBX,EBX
JMP 0x00348c71
MOV ECX,dword ptr [RSP + 0x18]
MOV RBX,qword ptr [RSP + 0x78]
MOV RDI,qword ptr [RSP + 0x70]
TEST ECX,ECX
JZ 0x0034926f
LEA RAX,[RBX + 0x1]
MOV byte ptr [RSP + 0x18],CL
MOV qword ptr [RSP + 0x10],RAX
CMP RDI,qword ptr [RSP + 0x68]
JZ 0x0034909e
MOV RAX,qword ptr [RSP + 0x80]
CMP qword ptr [RSP + 0x10],RAX
JA 0x00348fe8
MOVZX EAX,byte ptr [RSP + 0x18]
MOV RCX,qword ptr [RSP + 0x10]
MOV dword ptr [RSP + 0x18],0x0
MOV byte ptr [RDI + RBX*0x1],AL
MOV RAX,qword ptr [RSP + 0x70]
MOV qword ptr [RSP + 0x78],RCX
MOV byte ptr [RAX + RCX*0x1],0x0
JMP 0x00348c3c
MOV RDI,qword ptr [RSP + 0x50]
MOV ESI,0x20
CALL 0x002e1e10
JMP 0x003486b1
MOVZX EDI,byte ptr [R13 + 0x20]
MOV byte ptr [RSP + 0x5f],0x0
XOR EBX,EBX
XOR R14D,R14D
MOV byte ptr [RSP + 0x5d],0x1
MOV dword ptr [RSP + 0x18],0x0
JMP 0x00348669
MOV RAX,qword ptr [R14]
MOV dword ptr [RSP + 0x28],ECX
MOV RDI,R14
MOV byte ptr [RSP + 0x20],R8B
MOV byte ptr [RSP + 0x10],R9B
MOV byte ptr [RSP + 0x8],DL
CALL qword ptr [RAX + 0x48]
MOVZX EDX,byte ptr [RSP + 0x8]
MOV ECX,0x0
MOVZX R9D,byte ptr [RSP + 0x10]
CMP EAX,-0x1
MOV EAX,0x0
MOV ESI,0xffffffff
MOVZX R8D,byte ptr [RSP + 0x20]
CMOVNZ EDX,ECX
CMOVZ R14,RAX
MOV ECX,dword ptr [RSP + 0x28]
JMP 0x00348646
MOV RAX,qword ptr [RBX + 0x18]
CMP qword ptr [RBX + 0x10],RAX
JNC 0x00349179
XOR R8D,R8D
JMP 0x003484ce
MOV RAX,qword ptr [RBP + 0x18]
CMP qword ptr [RBP + 0x10],RAX
JNC 0x003491bd
XOR R14D,R14D
JMP 0x003484b0
MOV EBX,0xffffffff
MOV dword ptr [RSP + 0x10],0xffffffff
JMP 0x00348bc0
MOV RSI,qword ptr [RSP + 0x20]
MOV RAX,RSI
NEG RAX
CMP byte ptr [RSP + 0x5f],0x0
CMOVZ RAX,RSI
MOV RSI,qword ptr [RSP + 0xd8]
MOV qword ptr [RSI],RAX
JMP 0x0034881d
MOV RAX,qword ptr [RSP + 0xd0]
MOV dword ptr [RAX],0x4
JMP 0x00348a3e
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JNC 0x003491f5
MOVZX EBX,byte ptr [RAX]
JMP 0x003484e9
MOV byte ptr [RSP + 0x5f],0x0
JMP 0x00348590
MOV EBX,0xffffffff
TEST R15,R15
JZ 0x00348f05
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JNC 0x003490ef
MOVZX EBX,byte ptr [RAX]
MOVZX EDI,byte ptr [R13 + 0x20]
MOV dword ptr [RSP + 0x10],0xffffffff
JMP 0x00348590
MOV EDI,0x90
CALL 0x002d94a0
MOV R13,RAX
MOV dword ptr [RAX + 0x8],0x0
LEA RAX,[0x439288]
XOR ECX,ECX
MOV byte ptr [R13 + 0x20],0x0
LEA RSI,[R12 + 0xd0]
MOV RDI,R13
ADD RAX,0x10
MOV qword ptr [R13 + 0x10],0x0
MOV qword ptr [R13],RAX
MOV qword ptr [R13 + 0x18],0x0
MOV qword ptr [R13 + 0x28],0x0
MOV qword ptr [R13 + 0x30],0x0
MOV qword ptr [R13 + 0x38],0x0
MOV qword ptr [R13 + 0x40],0x0
MOV word ptr [R13 + 0x48],CX
MOV byte ptr [R13 + 0x88],0x0
CALL 0x002ece10
MOV RDI,qword ptr [R12 + 0xd0]
MOV RDX,qword ptr [RSP + 0x20]
MOV RSI,R13
CALL 0x002dd820
MOV R13,qword ptr [R14]
JMP 0x00348470
MOV RDI,RAX
MOV RAX,qword ptr [RAX]
CALL qword ptr [RAX + 0x48]
CMP EAX,-0x1
MOV EDX,0x0
CMOVNZ RDX,qword ptr [RSP + 0x8]
MOV EAX,0x0
CMOVNZ EBX,EAX
MOV qword ptr [RSP + 0x8],RDX
JMP 0x003487c0
MOV RDI,qword ptr [RSP + 0x50]
MOV R8D,0x1
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,RBX
CALL 0x002e1960
MOV RDI,qword ptr [RSP + 0x70]
JMP 0x00348d71
MOV qword ptr [RSP + 0x8],R14
MOV R14D,0x1
MOV dword ptr [RSP + 0x10],R9D
MOV byte ptr [RSP + 0x5d],0x0
JMP 0x00348669
MOV RDI,qword ptr [RSP + 0x50]
MOV R8D,0x1
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,RBX
CALL 0x002e1960
MOV RDI,qword ptr [RSP + 0x70]
JMP 0x00348a0e
MOV qword ptr [RSP + 0x8],R14
MOV R14D,0x1
MOV byte ptr [RSP + 0x5d],AL
MOV dword ptr [RSP + 0x10],R9D
JMP 0x00348678
MOV RAX,qword ptr [R15]
MOV dword ptr [RSP + 0x10],ECX
MOV RDI,R15
MOV EBX,0xffffffff
MOV byte ptr [RSP + 0x8],R8B
CALL qword ptr [RAX + 0x48]
MOV ECX,dword ptr [RSP + 0x10]
MOVZX R8D,byte ptr [RSP + 0x8]
MOV ESI,0xffffffff
CMP EAX,-0x1
CMOVNZ EBX,EAX
MOV EAX,0x0
CMOVZ R15,RAX
JMP 0x00348974
MOV EAX,0xf
JMP 0x00348d66
MOV RAX,qword ptr [RSP + 0x8]
MOV RDI,qword ptr [RAX + 0x18]
CMP qword ptr [RAX + 0x10],RDI
JNC 0x0034927b
XOR R14D,R14D
JMP 0x0034854d
MOV EAX,0xf
JMP 0x00348a05
MOV RAX,qword ptr [R15]
MOV RDI,R15
CALL qword ptr [RAX + 0x48]
CMP EAX,-0x1
MOV EBX,0xffffffff
CMOVNZ EBX,EAX
MOV EAX,0x0
CMOVZ R15,RAX
JMP 0x00348e75
MOV RAX,qword ptr [R15]
MOV dword ptr [RSP + 0x10],ECX
MOV RDI,R15
CALL qword ptr [RAX + 0x48]
MOV ECX,dword ptr [RSP + 0x10]
CMP EAX,-0x1
CMOVNZ EBX,EAX
MOV EAX,0x0
CMOVZ R15,RAX
JMP 0x00348f05
MOV RAX,qword ptr [R15]
MOV RDI,R15
CALL qword ptr [RAX + 0x48]
CMP EAX,-0x1
MOV EBX,0xffffffff
CMOVNZ EBX,EAX
MOV EAX,0x0
CMOVZ R15,RAX
JMP 0x00348b44
MOV RDI,RAX
MOV RAX,qword ptr [RAX]
CALL qword ptr [RAX + 0x48]
CMP EAX,-0x1
MOV EDX,0x0
CMOVNZ RDX,qword ptr [RSP + 0x8]
MOV EAX,0x0
CMOVNZ EBX,EAX
MOV qword ptr [RSP + 0x8],RDX
JMP 0x00348c71
MOV RAX,qword ptr [R15]
MOV dword ptr [RSP + 0x10],ECX
MOV RDI,R15
CALL qword ptr [RAX + 0x50]
MOV ECX,dword ptr [RSP + 0x10]
JMP 0x00348527
MOV RAX,qword ptr [RBX]
MOV byte ptr [RSP + 0x8],R8B
MOV RDI,RBX
MOV dword ptr [RSP + 0x20],ECX
MOV byte ptr [RSP + 0x18],DL
CALL qword ptr [RAX + 0x48]
MOVZX R8D,byte ptr [RSP + 0x8]
MOV ESI,0x0
MOV ECX,dword ptr [RSP + 0x20]
CMP EAX,-0x1
MOV EAX,0x0
MOVZX EDX,byte ptr [RSP + 0x18]
CMOVNZ RAX,RBX
CMOVNZ R8D,ESI
MOV qword ptr [RSP + 0x8],RAX
JMP 0x003484ce
MOV RAX,qword ptr [RBP]
MOV dword ptr [RSP + 0x28],ECX
MOV RDI,RBP
MOV byte ptr [RSP + 0x20],DL
CALL qword ptr [RAX + 0x48]
MOV ESI,0x0
MOVZX EDX,byte ptr [RSP + 0x20]
MOV ECX,dword ptr [RSP + 0x28]
CMP EAX,-0x1
MOV EAX,0x0
CMOVNZ RAX,RBP
CMOVNZ R14D,ESI
MOV R15,RAX
JMP 0x003484b0
MOV RAX,qword ptr [R15]
MOV dword ptr [RSP + 0x18],ECX
MOV RDI,R15
MOV EBX,0xffffffff
CALL qword ptr [RAX + 0x48]
MOV ECX,dword ptr [RSP + 0x18]
CMP EAX,-0x1
CMOVNZ EBX,EAX
MOV EAX,0x0
CMOVZ R15,RAX
JMP 0x003484e9
MOVZX R12D,byte ptr [RSP + 0x5d]
MOV RBX,qword ptr [RSP + 0x78]
MOV byte ptr [RSP + 0x5e],0x0
MOV RDI,qword ptr [RSP + 0x70]
MOV byte ptr [RSP + 0x5d],0x0
MOV qword ptr [RSP + 0x20],0x0
JMP 0x003487e1
MOVZX R12D,byte ptr [RSP + 0x5d]
MOV RBX,qword ptr [RSP + 0x78]
MOV qword ptr [RSP + 0x20],0x0
MOV RDI,qword ptr [RSP + 0x70]
MOV byte ptr [RSP + 0x5e],0x0
MOV byte ptr [RSP + 0x5d],0x0
JMP 0x003487e1
XOR R12D,R12D
MOV byte ptr [RSP + 0x5d],AL
JMP 0x003487e1
MOV byte ptr [RSP + 0x18],SIL
MOV RSI,RAX
MOV RAX,qword ptr [RAX]
MOV dword ptr [RSP + 0x10],ECX
MOV RDI,RSI
CALL qword ptr [RAX + 0x48]
MOV EDX,0x0
MOV ECX,dword ptr [RSP + 0x10]
MOVZX ESI,byte ptr [RSP + 0x18]
CMP EAX,-0x1
MOV EAX,0x0
CMOVNZ RAX,qword ptr [RSP + 0x8]
CMOVNZ R14D,EDX
MOV qword ptr [RSP + 0x8],RAX
JMP 0x0034854d
MOV RAX,qword ptr [R15]
MOV dword ptr [RSP + 0x10],ECX
MOV RDI,R15
CALL qword ptr [RAX + 0x48]
MOV ECX,dword ptr [RSP + 0x10]
CMP EAX,-0x1
MOV EAX,0x0
SETZ SIL
CMOVZ R15,RAX
JMP 0x00348537
(translation_unit "undefined1  [16]\nFUN_00348410(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,long param_6,\n            uint *param_7,ulong *param_8)\n\n{\n  ulong uVar1;\n  long *plVar2;\n  byte bVar3;\n  bool bVar4;\n  char cVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  long lVar9;\n  ulong uVar10;\n  void *pvVar11;\n  undefined8 *puVar12;\n  ulong uVar13;\n  uint uVar14;\n  uint uVar15;\n  char cVar16;\n  ulong uVar17;\n  ulong uVar18;\n  bool bVar19;\n  uint uVar20;\n  byte bVar21;\n  long lVar22;\n  bool bVar23;\n  bool bVar24;\n  bool bVar25;\n  undefined1 auVar26 [16];\n  long *local_c0;\n  ulong local_b8;\n  undefined1 local_b0;\n  ulong local_a8;\n  ulong local_a0;\n  bool local_6b;\n  byte local_6a;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48;\n  undefined7 uStack_47;\n  \n  local_b8 = param_3 & 0xffffffff;\n  lVar9 = FUN_002dd3b0(&DAT_0044bd90);\n  plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8);\n  lVar22 = *plVar2;\n  if (lVar22 == 0) {\n                    /* try { // try from 00348f25 to 00348f29 has its CatchHandler @ 003492e7 */\n    puVar12 = (undefined8 *)FUN_002d94a0(0x90);\n    *(undefined4 *)(puVar12 + 1) = 0;\n    *(undefined1 *)(puVar12 + 4) = 0;\n    puVar12[2] = 0;\n    *puVar12 = &PTR_FUN_00439298;\n    puVar12[3] = 0;\n    puVar12[5] = 0;\n    puVar12[6] = 0;\n    puVar12[7] = 0;\n    puVar12[8] = 0;\n    *(undefined2 *)(puVar12 + 9) = 0;\n    *(undefined1 *)(puVar12 + 0x11) = 0;\n                    /* try { // try from 00348f92 to 00348f96 has its CatchHandler @ 003492e5 */\n    FUN_002ece10(puVar12,param_6 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9);\n    lVar22 = *plVar2;\n  }\n  uVar15 = *(uint *)(param_6 + 0x18);\n  uVar14 = uVar15 & 0x4a;\n  iVar6 = 8;\n  if (uVar14 != 0x40) {\n    iVar6 = 0x10;\n    if (uVar14 != 8) {\n      iVar6 = 10;\n    }\n  }\n  bVar24 = (uint)param_3 == 0xffffffff;\n  bVar23 = param_2 != (long *)0x0 && bVar24;\n  bVar19 = bVar24;\n  if (bVar23) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar19 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }\n  }\n  uVar15 = uVar15 & 0x4a;\n  bVar25 = param_5 == -1;\n  bVar4 = param_4 != (long *)0x0 && bVar25;\n  local_c0 = param_4;\n  bVar23 = bVar25;\n  if (bVar4) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar23 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }\n  }\n  if (bVar23 == bVar19) {\n    cVar5 = *(char *)(lVar22 + 0x20);\n    bVar23 = false;\n    uVar14 = 0;\n    bVar19 = false;\n    local_6b = true;\n    iVar8 = 0;\n  }\n  else {\n    if ((param_2 == (long *)0x0) || (!bVar24)) {\n      uVar14 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar22 + 0x20);\n    cVar16 = (char)uVar14;\n    bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;\n    if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar23 = false;\n    }\n    bVar19 = false;\n    iVar8 = 0;\n    do {\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    } while (bVar19);\n    local_b8 = (ulong)uVar20;\n    local_6b = false;\n  }\nLAB_00348669:\n  local_a0 = 0x16;\n  if (iVar6 != 0x10) {\nLAB_00348678:\n    local_a0 = (ulong)iVar6;\n  }\n  bVar21 = local_6b;\n  local_48 = 0;\n  local_58 = &local_48;\n  local_50 = 0;\n  if (cVar5 != '\0') {\n    FUN_002e1e10(&local_58,0x20);\n  }\n  uVar18 = (ulong)iVar6;\n  bVar3 = *(byte *)(lVar22 + 0x88);\n  uVar10 = 0x7fffffffffffffff;\n  if (bVar23) {\n    uVar10 = 0x8000000000000000;\n  }\n  uVar17 = local_50;\n  if (bVar3 == 0) {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_6a = 0;\n    local_6b = false;\n    local_a8 = 0;\n  }\n  else {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }\njoined_r0x003487e4:\n  if (uVar17 == 0) {\n    local_50 = 0;\n    if ((bVar19) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }\n  else {\n    local_b0 = (undefined1)iVar8;\n    uVar10 = uVar17 + 1;\n    if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }\n    local_58[uVar17] = local_b0;\n    local_58[uVar10] = 0;\n    local_50 = uVar10;\n    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;\n  }\n  *param_8 = 0;\n  *param_7 = 4;\nLAB_0034881d:\n  if (bVar21 != 0) {\n    *param_7 = *param_7 | 2;\n  }\n  if (local_58 != &local_48) {\n    FUN_002dac70();\n  }\n  auVar26._8_8_ = param_3 & 0xffffffff00000000 | local_b8;\n  auVar26._0_8_ = param_2;\n  return auVar26;\ncode_r0x00348c77:\n  local_b8 = 0xffffffff;\n  bVar21 = bVar3;\n  uVar17 = local_50;\n  goto joined_r0x003487e4;\nLAB_003487c9:\n  local_b8 = 0xffffffff;\n  bVar21 = 1;\n  uVar17 = local_50;\n  goto joined_r0x003487e4;\nLAB_003489c8:\n  bVar21 = 0;\n  uVar17 = local_50;\n  goto joined_r0x003487e4;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_00348410(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,long param_6,\n            uint *param_7,ulong *param_8)\n\n{\n  ulong uVar1;" (macro_type_specifier "FUN_00348410(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) (pointer_declarator "*param_4" * identifier) , (ERROR "int" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "uint" identifier) (pointer_declarator "*param_7" * identifier) , (ERROR "ulong *param_8)\n\n{\n  ulong" identifier (pointer_declarator "*param_8" * identifier) ) { identifier) identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "void *pvVar11;" primitive_type (pointer_declarator "*pvVar11" * identifier) ;) (declaration "undefined8 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "char cVar16;" primitive_type identifier ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "ulong uVar18;" type_identifier identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "byte bVar21;" type_identifier identifier ;) (declaration "long lVar22;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "bool bVar24;" primitive_type identifier ;) (declaration "bool bVar25;" primitive_type identifier ;) (declaration "undefined1 auVar26 [16];" type_identifier (array_declarator "auVar26 [16]" identifier [ number_literal ]) ;) (declaration "long *local_c0;" (sized_type_specifier "long" long) (pointer_declarator "*local_c0" * identifier) ;) (declaration "ulong local_b8;" type_identifier identifier ;) (declaration "undefined1 local_b0;" type_identifier identifier ;) (declaration "ulong local_a8;" type_identifier identifier ;) (declaration "ulong local_a0;" type_identifier identifier ;) (declaration "bool local_6b;" primitive_type identifier ;) (declaration "byte local_6a;" type_identifier identifier ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "undefined1 local_48;" type_identifier identifier ;) (declaration "undefined7 uStack_47;" type_identifier identifier ;) (expression_statement "local_b8 = param_3 & 0xffffffff;" (assignment_expression "local_b8 = param_3 & 0xffffffff" identifier = (binary_expression "param_3 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "lVar9 = FUN_002dd3b0(&DAT_0044bd90);" (assignment_expression "lVar9 = FUN_002dd3b0(&DAT_0044bd90)" identifier = (call_expression "FUN_002dd3b0(&DAT_0044bd90)" identifier (argument_list "(&DAT_0044bd90)" ( (pointer_expression "&DAT_0044bd90" & identifier) )))) ;) (expression_statement "plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8);" (assignment_expression "plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8)" ( (binary_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8" (pointer_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18)" * (cast_expression "(long *)(*(long *)(param_6 + 0xd0) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_6 + 0xd0) + 0x18)" ( (binary_expression "*(long *)(param_6 + 0xd0) + 0x18" (pointer_expression "*(long *)(param_6 + 0xd0)" * (cast_expression "(long *)(param_6 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "lVar9 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar22 = *plVar2;" (assignment_expression "lVar22 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (if_statement "if (lVar22 == 0) {\n                    /* try { // try from 00348f25 to 00348f29 has its CatchHandler @ 003492e7 */\n    puVar12 = (undefined8 *)FUN_002d94a0(0x90);\n    *(undefined4 *)(puVar12 + 1) = 0;\n    *(undefined1 *)(puVar12 + 4) = 0;\n    puVar12[2] = 0;\n    *puVar12 = &PTR_FUN_00439298;\n    puVar12[3] = 0;\n    puVar12[5] = 0;\n    puVar12[6] = 0;\n    puVar12[7] = 0;\n    puVar12[8] = 0;\n    *(undefined2 *)(puVar12 + 9) = 0;\n    *(undefined1 *)(puVar12 + 0x11) = 0;\n                    /* try { // try from 00348f92 to 00348f96 has its CatchHandler @ 003492e5 */\n    FUN_002ece10(puVar12,param_6 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9);\n    lVar22 = *plVar2;\n  }" if (parenthesized_expression "(lVar22 == 0)" ( (binary_expression "lVar22 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 00348f25 to 00348f29 has its CatchHandler @ 003492e7 */\n    puVar12 = (undefined8 *)FUN_002d94a0(0x90);\n    *(undefined4 *)(puVar12 + 1) = 0;\n    *(undefined1 *)(puVar12 + 4) = 0;\n    puVar12[2] = 0;\n    *puVar12 = &PTR_FUN_00439298;\n    puVar12[3] = 0;\n    puVar12[5] = 0;\n    puVar12[6] = 0;\n    puVar12[7] = 0;\n    puVar12[8] = 0;\n    *(undefined2 *)(puVar12 + 9) = 0;\n    *(undefined1 *)(puVar12 + 0x11) = 0;\n                    /* try { // try from 00348f92 to 00348f96 has its CatchHandler @ 003492e5 */\n    FUN_002ece10(puVar12,param_6 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9);\n    lVar22 = *plVar2;\n  }" { comment (expression_statement "puVar12 = (undefined8 *)FUN_002d94a0(0x90);" (assignment_expression "puVar12 = (undefined8 *)FUN_002d94a0(0x90)" identifier = (cast_expression "(undefined8 *)FUN_002d94a0(0x90)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(0x90)" identifier (argument_list "(0x90)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar12 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar12 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar12 + 1)" * (cast_expression "(undefined4 *)(puVar12 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 1)" ( (binary_expression "puVar12 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar12 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar12 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar12 + 4)" * (cast_expression "(undefined1 *)(puVar12 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 4)" ( (binary_expression "puVar12 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar12[2] = 0;" (assignment_expression "puVar12[2] = 0" (subscript_expression "puVar12[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar12 = &PTR_FUN_00439298;" (assignment_expression "*puVar12 = &PTR_FUN_00439298" (pointer_expression "*puVar12" * identifier) = (pointer_expression "&PTR_FUN_00439298" & identifier)) ;) (expression_statement "puVar12[3] = 0;" (assignment_expression "puVar12[3] = 0" (subscript_expression "puVar12[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar12[5] = 0;" (assignment_expression "puVar12[5] = 0" (subscript_expression "puVar12[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar12[6] = 0;" (assignment_expression "puVar12[6] = 0" (subscript_expression "puVar12[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar12[7] = 0;" (assignment_expression "puVar12[7] = 0" (subscript_expression "puVar12[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar12[8] = 0;" (assignment_expression "puVar12[8] = 0" (subscript_expression "puVar12[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar12 + 9) = 0;" (assignment_expression "*(undefined2 *)(puVar12 + 9) = 0" (pointer_expression "*(undefined2 *)(puVar12 + 9)" * (cast_expression "(undefined2 *)(puVar12 + 9)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 9)" ( (binary_expression "puVar12 + 9" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar12 + 0x11) = 0;" (assignment_expression "*(undefined1 *)(puVar12 + 0x11) = 0" (pointer_expression "*(undefined1 *)(puVar12 + 0x11)" * (cast_expression "(undefined1 *)(puVar12 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x11)" ( (binary_expression "puVar12 + 0x11" identifier + number_literal) )))) = number_literal) ;) comment (expression_statement "FUN_002ece10(puVar12,param_6 + 0xd0);" (call_expression "FUN_002ece10(puVar12,param_6 + 0xd0)" identifier (argument_list "(puVar12,param_6 + 0xd0)" ( identifier , (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9);" (call_expression "FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9)" identifier (argument_list "(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9)" ( (pointer_expression "*(undefined8 *)(param_6 + 0xd0)" * (cast_expression "(undefined8 *)(param_6 + 0xd0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "lVar22 = *plVar2;" (assignment_expression "lVar22 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) })) (expression_statement "uVar15 = *(uint *)(param_6 + 0x18);" (assignment_expression "uVar15 = *(uint *)(param_6 + 0x18)" identifier = (pointer_expression "*(uint *)(param_6 + 0x18)" * (cast_expression "(uint *)(param_6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0x18)" ( (binary_expression "param_6 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = uVar15 & 0x4a;" (assignment_expression "uVar14 = uVar15 & 0x4a" identifier = (binary_expression "uVar15 & 0x4a" identifier & number_literal)) ;) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (if_statement "if (uVar14 != 0x40) {\n    iVar6 = 0x10;\n    if (uVar14 != 8) {\n      iVar6 = 10;\n    }\n  }" if (parenthesized_expression "(uVar14 != 0x40)" ( (binary_expression "uVar14 != 0x40" identifier != number_literal) )) (compound_statement "{\n    iVar6 = 0x10;\n    if (uVar14 != 8) {\n      iVar6 = 10;\n    }\n  }" { (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" identifier = number_literal) ;) (if_statement "if (uVar14 != 8) {\n      iVar6 = 10;\n    }" if (parenthesized_expression "(uVar14 != 8)" ( (binary_expression "uVar14 != 8" identifier != number_literal) )) (compound_statement "{\n      iVar6 = 10;\n    }" { (expression_statement "iVar6 = 10;" (assignment_expression "iVar6 = 10" identifier = number_literal) ;) })) })) (expression_statement "bVar24 = (uint)param_3 == 0xffffffff;" (assignment_expression "bVar24 = (uint)param_3 == 0xffffffff" identifier = (binary_expression "(uint)param_3 == 0xffffffff" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) == number_literal)) ;) (expression_statement "bVar23 = param_2 != (long *)0x0 && bVar24;" (assignment_expression "bVar23 = param_2 != (long *)0x0 && bVar24" identifier = (binary_expression "param_2 != (long *)0x0 && bVar24" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar19 = bVar24;" (assignment_expression "bVar19 = bVar24" identifier = identifier) ;) (if_statement "if (bVar23) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar19 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }\n  }" if (parenthesized_expression "(bVar23)" ( identifier )) (compound_statement "{\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar19 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }\n  }" { (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar19 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      bVar19 = false;\n    }" { (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) }) (else_clause "else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }" else (compound_statement "{\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }" { (expression_statement "iVar8 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar8 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar8 != -1) {\n        plVar2 = param_2;\n      }" if (parenthesized_expression "(iVar8 != -1)" ( (binary_expression "iVar8 != -1" identifier != number_literal) )) (compound_statement "{\n        plVar2 = param_2;\n      }" { (expression_statement "plVar2 = param_2;" (assignment_expression "plVar2 = param_2" identifier = identifier) ;) })) (expression_statement "param_2 = plVar2;" (assignment_expression "param_2 = plVar2" identifier = identifier) ;) (expression_statement "bVar19 = iVar8 == -1 && bVar23;" (assignment_expression "bVar19 = iVar8 == -1 && bVar23" identifier = (binary_expression "iVar8 == -1 && bVar23" (binary_expression "iVar8 == -1" identifier == number_literal) && identifier)) ;) }))) })) (expression_statement "uVar15 = uVar15 & 0x4a;" (assignment_expression "uVar15 = uVar15 & 0x4a" identifier = (binary_expression "uVar15 & 0x4a" identifier & number_literal)) ;) (expression_statement "bVar25 = param_5 == -1;" (assignment_expression "bVar25 = param_5 == -1" identifier = (binary_expression "param_5 == -1" identifier == number_literal)) ;) (expression_statement "bVar4 = param_4 != (long *)0x0 && bVar25;" (assignment_expression "bVar4 = param_4 != (long *)0x0 && bVar25" identifier = (binary_expression "param_4 != (long *)0x0 && bVar25" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "local_c0 = param_4;" (assignment_expression "local_c0 = param_4" identifier = identifier) ;) (expression_statement "bVar23 = bVar25;" (assignment_expression "bVar23 = bVar25" identifier = identifier) ;) (if_statement "if (bVar4) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar23 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }\n  }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar23 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }\n  }" { (if_statement "if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar23 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }" if (parenthesized_expression "((ulong)param_4[2] < (ulong)param_4[3])" ( (binary_expression "(ulong)param_4[2] < (ulong)param_4[3]" (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      bVar23 = false;\n    }" { (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" identifier = false) ;) }) (else_clause "else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }" else (compound_statement "{\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }" { (expression_statement "iVar8 = (**(code **)(*param_4 + 0x48))(param_4);" (assignment_expression "iVar8 = (**(code **)(*param_4 + 0x48))(param_4)" identifier = (call_expression "(**(code **)(*param_4 + 0x48))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" ( (pointer_expression "**(code **)(*param_4 + 0x48)" * (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "local_c0 = (long *)0x0;" (assignment_expression "local_c0 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar8 != -1) {\n        local_c0 = param_4;\n      }" if (parenthesized_expression "(iVar8 != -1)" ( (binary_expression "iVar8 != -1" identifier != number_literal) )) (compound_statement "{\n        local_c0 = param_4;\n      }" { (expression_statement "local_c0 = param_4;" (assignment_expression "local_c0 = param_4" identifier = identifier) ;) })) (expression_statement "bVar23 = iVar8 == -1 && bVar4;" (assignment_expression "bVar23 = iVar8 == -1 && bVar4" identifier = (binary_expression "iVar8 == -1 && bVar4" (binary_expression "iVar8 == -1" identifier == number_literal) && identifier)) ;) }))) })) (if_statement "if (bVar23 == bVar19) {\n    cVar5 = *(char *)(lVar22 + 0x20);\n    bVar23 = false;\n    uVar14 = 0;\n    bVar19 = false;\n    local_6b = true;\n    iVar8 = 0;\n  }\n  else {\n    if ((param_2 == (long *)0x0) || (!bVar24)) {\n      uVar14 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar22 + 0x20);\n    cVar16 = (char)uVar14;\n    bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;\n    if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar23 = false;\n    }\n    bVar19 = false;\n    iVar8 = 0;\n    do {\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    } while (bVar19);\n    local_b8 = (ulong)uVar20;\n    local_6b = false;\n  }" if (parenthesized_expression "(bVar23 == bVar19)" ( (binary_expression "bVar23 == bVar19" identifier == identifier) )) (compound_statement "{\n    cVar5 = *(char *)(lVar22 + 0x20);\n    bVar23 = false;\n    uVar14 = 0;\n    bVar19 = false;\n    local_6b = true;\n    iVar8 = 0;\n  }" { (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" identifier = (pointer_expression "*(char *)(lVar22 + 0x20)" * (cast_expression "(char *)(lVar22 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" identifier = false) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "local_6b = true;" (assignment_expression "local_6b = true" identifier = true) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if ((param_2 == (long *)0x0) || (!bVar24)) {\n      uVar14 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar22 + 0x20);\n    cVar16 = (char)uVar14;\n    bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;\n    if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar23 = false;\n    }\n    bVar19 = false;\n    iVar8 = 0;\n    do {\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    } while (bVar19);\n    local_b8 = (ulong)uVar20;\n    local_6b = false;\n  }" else (compound_statement "{\n    if ((param_2 == (long *)0x0) || (!bVar24)) {\n      uVar14 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar22 + 0x20);\n    cVar16 = (char)uVar14;\n    bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;\n    if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar23 = false;\n    }\n    bVar19 = false;\n    iVar8 = 0;\n    do {\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    } while (bVar19);\n    local_b8 = (ulong)uVar20;\n    local_6b = false;\n  }" { (if_statement "if ((param_2 == (long *)0x0) || (!bVar24)) {\n      uVar14 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" if (parenthesized_expression "((param_2 == (long *)0x0) || (!bVar24))" ( (binary_expression "(param_2 == (long *)0x0) || (!bVar24)" (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(!bVar24)" ( (unary_expression "!bVar24" ! identifier) ))) )) (compound_statement "{\n      uVar14 = (uint)param_3 & 0xff;\n    }" { (expression_statement "uVar14 = (uint)param_3 & 0xff;" (assignment_expression "uVar14 = (uint)param_3 & 0xff" identifier = (binary_expression "(uint)param_3 & 0xff" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) }) (else_clause "else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" else (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      uVar14 = (uint)*(byte *)param_2[2];\n    }" { (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" else (compound_statement "{\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" { (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }" if (parenthesized_expression "(uVar14 == 0xffffffff)" ( (binary_expression "uVar14 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) })) }))))) (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" identifier = (pointer_expression "*(char *)(lVar22 + 0x20)" * (cast_expression "(char *)(lVar22 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "cVar16 = (char)uVar14;" (assignment_expression "cVar16 = (char)uVar14" identifier = (cast_expression "(char)uVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;" (assignment_expression "bVar23 = *(char *)(lVar22 + 0x6e) == cVar16" identifier = (binary_expression "*(char *)(lVar22 + 0x6e) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x6e)" * (cast_expression "(char *)(lVar22 + 0x6e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x6e)" ( (binary_expression "lVar22 + 0x6e" identifier + number_literal) )))) == identifier)) ;) (if_statement "if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar23 = false;\n    }" if (parenthesized_expression "((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16))" ( (binary_expression "(bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)" (parenthesized_expression "(bVar23)" ( identifier )) || (parenthesized_expression "(*(char *)(lVar22 + 0x6f) == cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x6f) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x6f)" * (cast_expression "(char *)(lVar22 + 0x6f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x6f)" ( (binary_expression "lVar22 + 0x6f" identifier + number_literal) )))) == identifier) ))) )) (compound_statement "{\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }" { (if_statement "if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }" if (parenthesized_expression "(((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16))" ( (binary_expression "((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)" (parenthesized_expression "((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16))" ( (binary_expression "(cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)" (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(char *)(lVar22 + 0x49) != cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x49) != cVar16" (pointer_expression "*(char *)(lVar22 + 0x49)" * (cast_expression "(char *)(lVar22 + 0x49)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x49)" ( (binary_expression "lVar22 + 0x49" identifier + number_literal) )))) != identifier) ))) )) && (parenthesized_expression "(*(char *)(lVar22 + 0x48) != cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x48) != cVar16" (pointer_expression "*(char *)(lVar22 + 0x48)" * (cast_expression "(char *)(lVar22 + 0x48)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x48)" ( (binary_expression "lVar22 + 0x48" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }" { (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          param_2[2] = param_2[2] + 1;\n        }" { (expression_statement "param_2[2] = param_2[2] + 1;" (assignment_expression "param_2[2] = param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" else (compound_statement "{\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" { (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;) }))) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }" { (expression_statement "iVar8 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar8 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "bVar19 = iVar8 == -1;" (assignment_expression "bVar19 = iVar8 == -1" identifier = (binary_expression "iVar8 == -1" identifier == number_literal)) ;) (if_statement "if (bVar19) {\n            param_2 = (long *)0x0;\n          }" if (parenthesized_expression "(bVar19)" ( identifier )) (compound_statement "{\n            param_2 = (long *)0x0;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) })) (expression_statement "bVar4 = local_c0 != (long *)0x0 && bVar25;" (assignment_expression "bVar4 = local_c0 != (long *)0x0 && bVar25" identifier = (binary_expression "local_c0 != (long *)0x0 && bVar25" (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar24 = bVar25;" (assignment_expression "bVar24 = bVar25" identifier = identifier) ;) (if_statement "if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }" { (if_statement "if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }" if (parenthesized_expression "((ulong)local_c0[2] < (ulong)local_c0[3])" ( (binary_expression "(ulong)local_c0[2] < (ulong)local_c0[3]" (cast_expression "(ulong)local_c0[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_c0[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[3]" identifier [ number_literal ]))) )) (compound_statement "{\n            bVar24 = false;\n          }" { (expression_statement "bVar24 = false;" (assignment_expression "bVar24 = false" identifier = false) ;) }) (else_clause "else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }" else (compound_statement "{\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }" { (expression_statement "iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0)" identifier = (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" ( (pointer_expression "**(code **)(*local_c0 + 0x48)" * (pointer_expression "*(code **)(*local_c0 + 0x48)" * (cast_expression "(code **)(*local_c0 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_c0 + 0x48)" ( (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" * identifier) + number_literal) ))))) )) (argument_list "(local_c0)" ( identifier )))) ;) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }" if (parenthesized_expression "(iVar8 != -1)" ( (binary_expression "iVar8 != -1" identifier != number_literal) )) (compound_statement "{\n              plVar2 = local_c0;\n            }" { (expression_statement "plVar2 = local_c0;" (assignment_expression "plVar2 = local_c0" identifier = identifier) ;) })) (expression_statement "local_c0 = plVar2;" (assignment_expression "local_c0 = plVar2" identifier = identifier) ;) (expression_statement "bVar24 = iVar8 == -1 && bVar4;" (assignment_expression "bVar24 = iVar8 == -1 && bVar4" identifier = (binary_expression "iVar8 == -1 && bVar4" (binary_expression "iVar8 == -1" identifier == number_literal) && identifier)) ;) }))) })) (if_statement "if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }" if (parenthesized_expression "(bVar24 == bVar19)" ( (binary_expression "bVar24 == bVar19" identifier == identifier) )) (compound_statement "{\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }" { (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" identifier = (pointer_expression "*(char *)(lVar22 + 0x20)" * (cast_expression "(char *)(lVar22 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_6b = true;" (assignment_expression "local_6b = true" identifier = true) ;) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00348669;" goto statement_identifier ;) })) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }" if (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }" { (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n            uVar14 = (uint)*(byte *)param_2[2];\n          }" { (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }" else (compound_statement "{\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }" { (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }" if (parenthesized_expression "(uVar14 == 0xffffffff)" ( (binary_expression "uVar14 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) })) }))) })) (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" identifier = (pointer_expression "*(char *)(lVar22 + 0x20)" * (cast_expression "(char *)(lVar22 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) })) }) (else_clause "else {\n      bVar23 = false;\n    }" else (compound_statement "{\n      bVar23 = false;\n    }" { (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" identifier = false) ;) }))) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    } while (bVar19);" do (compound_statement "{\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    }" { (expression_statement "uVar20 = (uint)local_b8;" (assignment_expression "uVar20 = (uint)local_b8" identifier = (cast_expression "(uint)local_b8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "cVar16 = (char)uVar14;" (assignment_expression "cVar16 = (char)uVar14" identifier = (cast_expression "(char)uVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;" if (parenthesized_expression "(((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16))" ( (binary_expression "((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)" (parenthesized_expression "((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16))" ( (binary_expression "(cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)" (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(lVar22 + 0x49) == cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x49) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x49)" * (cast_expression "(char *)(lVar22 + 0x49)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x49)" ( (binary_expression "lVar22 + 0x49" identifier + number_literal) )))) == identifier) ))) )) || (parenthesized_expression "(*(char *)(lVar22 + 0x48) == cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x48) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x48)" * (cast_expression "(char *)(lVar22 + 0x48)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x48)" ( (binary_expression "lVar22 + 0x48" identifier + number_literal) )))) == identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "bVar24 = bVar25;" (assignment_expression "bVar24 = bVar25" identifier = identifier) ;) (if_statement "if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }" if (parenthesized_expression "(*(char *)(lVar22 + 0x72) == cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x72) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x72)" * (cast_expression "(char *)(lVar22 + 0x72)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x72)" ( (binary_expression "lVar22 + 0x72" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }" { (expression_statement "bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);" (assignment_expression "bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U)" identifier = (cast_expression "(bool)(iVar6 == 10 | bVar19 ^ 1U)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(iVar6 == 10 | bVar19 ^ 1U)" ( (binary_expression "iVar6 == 10 | bVar19 ^ 1U" (binary_expression "iVar6 == 10" identifier == number_literal) | (binary_expression "bVar19 ^ 1U" identifier ^ number_literal)) )))) ;) (if_statement "if (!bVar4) goto LAB_003485d9;" if (parenthesized_expression "(!bVar4)" ( (unary_expression "!bVar4" ! identifier) )) (goto_statement "goto LAB_003485d9;" goto statement_identifier ;)) (expression_statement "bVar19 = iVar6 == 8 || uVar15 == 0;" (assignment_expression "bVar19 = iVar6 == 8 || uVar15 == 0" identifier = (binary_expression "iVar6 == 8 || uVar15 == 0" (binary_expression "iVar6 == 8" identifier == number_literal) || (binary_expression "uVar15 == 0" identifier == number_literal))) ;) (if_statement "if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }" if (parenthesized_expression "(iVar6 != 8 && uVar15 != 0)" ( (binary_expression "iVar6 != 8 && uVar15 != 0" (binary_expression "iVar6 != 8" identifier != number_literal) && (binary_expression "uVar15 != 0" identifier != number_literal)) )) (compound_statement "{\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "bVar19 = bVar4;" (assignment_expression "bVar19 = bVar4" identifier = identifier) ;) (goto_statement "goto LAB_0034860e;" goto statement_identifier ;) })) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (expression_statement "uVar10 = param_2[2];" (assignment_expression "uVar10 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (if_statement "if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;" if (parenthesized_expression "((ulong)param_2[3] <= uVar10)" ( (binary_expression "(ulong)param_2[3] <= uVar10" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_003488c0;" goto statement_identifier ;)) (labeled_statement "LAB_0034861c:\n        param_2[2] = uVar10 + 1;" statement_identifier : (expression_statement "param_2[2] = uVar10 + 1;" (assignment_expression "param_2[2] = uVar10 + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_003488f8;" goto statement_identifier ;)) (labeled_statement "LAB_00348635:\n        bVar4 = false;" statement_identifier : (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;)) (if_statement "if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;" if (parenthesized_expression "(local_c0 != (long *)0x0 && bVar25)" ( (binary_expression "local_c0 != (long *)0x0 && bVar25" (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) (goto_statement "goto LAB_00348940;" goto statement_identifier ;)) (labeled_statement "LAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }" statement_identifier : (if_statement "if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }" if (parenthesized_expression "(bVar24 == bVar4)" ( (binary_expression "bVar24 == bVar4" identifier == identifier) )) (compound_statement "{\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }" { (labeled_statement "LAB_0034864f:\n          local_b8 = 0xffffffff;" statement_identifier : (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" identifier = (pointer_expression "*(char *)(lVar22 + 0x20)" * (cast_expression "(char *)(lVar22 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_6b = true;" (assignment_expression "local_6b = true" identifier = true) ;) (goto_statement "goto LAB_00348669;" goto statement_identifier ;) }))) }) (else_clause "else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }" else (compound_statement "{\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }" { (if_statement "if (!bVar19) break;" if (parenthesized_expression "(!bVar19)" ( (unary_expression "!bVar19" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }" statement_identifier : (if_statement "if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }" if (parenthesized_expression "((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16))" ( (binary_expression "(*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)" (parenthesized_expression "(*(char *)(lVar22 + 0x70) != cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x70) != cVar16" (pointer_expression "*(char *)(lVar22 + 0x70)" * (cast_expression "(char *)(lVar22 + 0x70)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x70)" ( (binary_expression "lVar22 + 0x70" identifier + number_literal) )))) != identifier) )) && (parenthesized_expression "(*(char *)(lVar22 + 0x71) != cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x71) != cVar16" (pointer_expression "*(char *)(lVar22 + 0x71)" * (cast_expression "(char *)(lVar22 + 0x71)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x71)" ( (binary_expression "lVar22 + 0x71" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }" { (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" identifier = true) ;) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" identifier = false) ;) (goto_statement "goto LAB_00348669;" goto statement_identifier ;) }))) (expression_statement "local_6b = iVar6 == 0x10 || uVar15 == 0;" (assignment_expression "local_6b = iVar6 == 0x10 || uVar15 == 0" identifier = (binary_expression "iVar6 == 0x10 || uVar15 == 0" (binary_expression "iVar6 == 0x10" identifier == number_literal) || (binary_expression "uVar15 == 0" identifier == number_literal))) ;) (if_statement "if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }" if (parenthesized_expression "(iVar6 != 0x10 && uVar15 != 0)" ( (binary_expression "iVar6 != 0x10 && uVar15 != 0" (binary_expression "iVar6 != 0x10" identifier != number_literal) && (binary_expression "uVar15 != 0" identifier != number_literal)) )) (compound_statement "{\n          bVar19 = true;\n          goto LAB_00348678;\n        }" { (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" identifier = true) ;) (goto_statement "goto LAB_00348678;" goto statement_identifier ;) })) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" identifier = number_literal) ;) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (labeled_statement "LAB_0034860e:\n        uVar10 = param_2[2];" statement_identifier : (expression_statement "uVar10 = param_2[2];" (assignment_expression "uVar10 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;)) (if_statement "if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;" if (parenthesized_expression "(uVar10 < (ulong)param_2[3])" ( (binary_expression "uVar10 < (ulong)param_2[3]" identifier < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0034861c;" goto statement_identifier ;)) (labeled_statement "LAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);" statement_identifier : (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;)) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348635;" goto statement_identifier ;)) (labeled_statement "LAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);" statement_identifier : (expression_statement "iVar7 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar7 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;)) (expression_statement "bVar4 = iVar7 == -1;" (assignment_expression "bVar4 = iVar7 == -1" identifier = (binary_expression "iVar7 == -1" identifier == number_literal)) ;) (if_statement "if (bVar4) {\n          param_2 = (long *)0x0;\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          param_2 = (long *)0x0;\n        }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;" if (parenthesized_expression "(local_c0 == (long *)0x0 || !bVar25)" ( (binary_expression "local_c0 == (long *)0x0 || !bVar25" (binary_expression "local_c0 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar25" ! identifier)) )) (goto_statement "goto LAB_00348646;" goto statement_identifier ;)) (labeled_statement "LAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;" statement_identifier : (expression_statement "bVar24 = local_c0 != (long *)0x0;" (assignment_expression "bVar24 = local_c0 != (long *)0x0" identifier = (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ;)) (if_statement "if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }" if (parenthesized_expression "((ulong)local_c0[3] <= (ulong)local_c0[2])" ( (binary_expression "(ulong)local_c0[3] <= (ulong)local_c0[2]" (cast_expression "(ulong)local_c0[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_c0[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[2]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }" { (expression_statement "iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0)" identifier = (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" ( (pointer_expression "**(code **)(*local_c0 + 0x48)" * (pointer_expression "*(code **)(*local_c0 + 0x48)" * (cast_expression "(code **)(*local_c0 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_c0 + 0x48)" ( (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" * identifier) + number_literal) ))))) )) (argument_list "(local_c0)" ( identifier )))) ;) (if_statement "if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (compound_statement "{\n            local_c0 = (long *)0x0;\n          }" { (expression_statement "local_c0 = (long *)0x0;" (assignment_expression "local_c0 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "bVar24 = iVar7 == -1 && (bVar24 && bVar25);" (assignment_expression "bVar24 = iVar7 == -1 && (bVar24 && bVar25)" identifier = (binary_expression "iVar7 == -1 && (bVar24 && bVar25)" (binary_expression "iVar7 == -1" identifier == number_literal) && (parenthesized_expression "(bVar24 && bVar25)" ( (binary_expression "bVar24 && bVar25" identifier && identifier) )))) ;) (goto_statement "goto LAB_00348646;" goto statement_identifier ;) })) (if_statement "if (bVar4 == false) goto LAB_0034864f;" if (parenthesized_expression "(bVar4 == false)" ( (binary_expression "bVar4 == false" identifier == false) )) (goto_statement "goto LAB_0034864f;" goto statement_identifier ;)) }))) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }" if (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }" { (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          uVar14 = (uint)*(byte *)param_2[2];\n        }" { (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" else (compound_statement "{\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" { (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" if (parenthesized_expression "(uVar14 == 0xffffffff)" ( (binary_expression "uVar14 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) })) }))) })) (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" identifier = (pointer_expression "*(char *)(lVar22 + 0x20)" * (cast_expression "(char *)(lVar22 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) (expression_statement "uVar20 = 0xffffffff;" (assignment_expression "uVar20 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (expression_statement "local_b8 = (ulong)uVar20;" (assignment_expression "local_b8 = (ulong)uVar20" identifier = (cast_expression "(ulong)uVar20" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" identifier = false) ;) }))) (labeled_statement "LAB_00348669:\n  local_a0 = 0x16;" statement_identifier : (expression_statement "local_a0 = 0x16;" (assignment_expression "local_a0 = 0x16" identifier = number_literal) ;)) (if_statement "if (iVar6 != 0x10) {\nLAB_00348678:\n    local_a0 = (ulong)iVar6;\n  }" if (parenthesized_expression "(iVar6 != 0x10)" ( (binary_expression "iVar6 != 0x10" identifier != number_literal) )) (compound_statement "{\nLAB_00348678:\n    local_a0 = (ulong)iVar6;\n  }" { (labeled_statement "LAB_00348678:\n    local_a0 = (ulong)iVar6;" statement_identifier : (expression_statement "local_a0 = (ulong)iVar6;" (assignment_expression "local_a0 = (ulong)iVar6" identifier = (cast_expression "(ulong)iVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;)) })) (expression_statement "bVar21 = local_6b;" (assignment_expression "bVar21 = local_6b" identifier = identifier) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (if_statement "if (cVar5 != '\0') {\n    FUN_002e1e10(&local_58,0x20);\n  }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_002e1e10(&local_58,0x20);\n  }" { (expression_statement "FUN_002e1e10(&local_58,0x20);" (call_expression "FUN_002e1e10(&local_58,0x20)" identifier (argument_list "(&local_58,0x20)" ( (pointer_expression "&local_58" & identifier) , number_literal ))) ;) })) (expression_statement "uVar18 = (ulong)iVar6;" (assignment_expression "uVar18 = (ulong)iVar6" identifier = (cast_expression "(ulong)iVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "bVar3 = *(byte *)(lVar22 + 0x88);" (assignment_expression "bVar3 = *(byte *)(lVar22 + 0x88)" identifier = (pointer_expression "*(byte *)(lVar22 + 0x88)" * (cast_expression "(byte *)(lVar22 + 0x88)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x88)" ( (binary_expression "lVar22 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = 0x7fffffffffffffff;" (assignment_expression "uVar10 = 0x7fffffffffffffff" identifier = number_literal) ;) (if_statement "if (bVar23) {\n    uVar10 = 0x8000000000000000;\n  }" if (parenthesized_expression "(bVar23)" ( identifier )) (compound_statement "{\n    uVar10 = 0x8000000000000000;\n  }" { (expression_statement "uVar10 = 0x8000000000000000;" (assignment_expression "uVar10 = 0x8000000000000000" identifier = number_literal) ;) })) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (if_statement "if (bVar3 == 0) {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_6a = 0;\n    local_6b = false;\n    local_a8 = 0;\n  }\n  else {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_6a = 0;\n    local_6b = false;\n    local_a8 = 0;\n  }" { (if_statement "if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" if (parenthesized_expression "(local_6b == false)" ( (binary_expression "local_6b == false" identifier == false) )) (compound_statement "{\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" { (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (do_statement "do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );" do (compound_statement "{\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      }" { (expression_statement "cVar5 = (char)uVar14;" (assignment_expression "cVar5 = (char)uVar14" identifier = (cast_expression "(char)uVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar6 = (int)cVar5;" (assignment_expression "iVar6 = (int)cVar5" identifier = (cast_expression "(int)cVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }" if (parenthesized_expression "(local_a0 < 0xb)" ( (binary_expression "local_a0 < 0xb" identifier < number_literal) )) (compound_statement "{\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }" { (if_statement "if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;" if (parenthesized_expression "((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5))" ( (binary_expression "(cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)" (parenthesized_expression "(cVar5 < '0')" ( (binary_expression "cVar5 < '0'" identifier < (char_literal "'0'" ' character ')) )) || (parenthesized_expression "((char)((char)local_a0 + '0') <= cVar5)" ( (binary_expression "(char)((char)local_a0 + '0') <= cVar5" (cast_expression "(char)((char)local_a0 + '0')" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)local_a0 + '0')" ( (binary_expression "(char)local_a0 + '0'" (cast_expression "(char)local_a0" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'0'" ' character ')) ))) <= identifier) ))) )) (goto_statement "goto LAB_003489c8;" goto statement_identifier ;)) (labeled_statement "LAB_00348742:\n          iVar6 = iVar6 + -0x30;" statement_identifier : (expression_statement "iVar6 = iVar6 + -0x30;" (assignment_expression "iVar6 = iVar6 + -0x30" identifier = (binary_expression "iVar6 + -0x30" identifier + number_literal)) ;)) }) (else_clause "else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }" else (compound_statement "{\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }" { (if_statement "if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;" if (parenthesized_expression "((byte)(cVar5 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar5 - 0x30U) < 10" (call_expression "(byte)(cVar5 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 - 0x30U)" ( (binary_expression "cVar5 - 0x30U" identifier - number_literal) ))) < number_literal) )) (goto_statement "goto LAB_00348742;" goto statement_identifier ;)) (if_statement "if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }" if (parenthesized_expression "((byte)(cVar5 + 0x9fU) < 6)" ( (binary_expression "(byte)(cVar5 + 0x9fU) < 6" (call_expression "(byte)(cVar5 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 + 0x9fU)" ( (binary_expression "cVar5 + 0x9fU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n            iVar6 = iVar6 + -0x57;\n          }" { (expression_statement "iVar6 = iVar6 + -0x57;" (assignment_expression "iVar6 = iVar6 + -0x57" identifier = (binary_expression "iVar6 + -0x57" identifier + number_literal)) ;) }) (else_clause "else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }" else (compound_statement "{\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }" { (if_statement "if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;" if (parenthesized_expression "(5 < (byte)(cVar5 + 0xbfU))" ( (binary_expression "5 < (byte)(cVar5 + 0xbfU)" number_literal < (call_expression "(byte)(cVar5 + 0xbfU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 + 0xbfU)" ( (binary_expression "cVar5 + 0xbfU" identifier + number_literal) )))) )) (goto_statement "goto LAB_003489c8;" goto statement_identifier ;)) (expression_statement "iVar6 = iVar6 + -0x37;" (assignment_expression "iVar6 = iVar6 + -0x37" identifier = (binary_expression "iVar6 + -0x37" identifier + number_literal)) ;) }))) }))) (if_statement "if (iVar6 == -1) goto LAB_003489c8;" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (goto_statement "goto LAB_003489c8;" goto statement_identifier ;)) (expression_statement "bVar24 = bVar25;" (assignment_expression "bVar24 = bVar25" identifier = identifier) ;) (if_statement "if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }" if (parenthesized_expression "(uVar10 / uVar18 < local_a8)" ( (binary_expression "uVar10 / uVar18 < local_a8" (binary_expression "uVar10 / uVar18" identifier / identifier) < identifier) )) (compound_statement "{\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }" { (expression_statement "local_6a = 1;" (assignment_expression "local_6a = 1" identifier = number_literal) ;) (expression_statement "uVar17 = param_2[2];" (assignment_expression "uVar17 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (if_statement "if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;" if (parenthesized_expression "(uVar17 < (ulong)param_2[3])" ( (binary_expression "uVar17 < (ulong)param_2[3]" identifier < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348793;" goto statement_identifier ;)) (labeled_statement "LAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);" statement_identifier : comment (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;)) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_003487ac;" goto statement_identifier ;)) (labeled_statement "LAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" statement_identifier : (expression_statement "iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar6 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;)) (expression_statement "bVar4 = iVar6 == -1;" (assignment_expression "bVar4 = iVar6 == -1" identifier = (binary_expression "iVar6 == -1" identifier == number_literal)) ;) (if_statement "if (bVar4) {\n            param_2 = (long *)0x0;\n          }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n            param_2 = (long *)0x0;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;" if (parenthesized_expression "(local_c0 != (long *)0x0 && bVar25)" ( (binary_expression "local_c0 != (long *)0x0 && bVar25" (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) (goto_statement "goto LAB_00348b10;" goto statement_identifier ;)) (labeled_statement "LAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;" statement_identifier : (if_statement "if (bVar24 == bVar4) goto LAB_003487c9;" if (parenthesized_expression "(bVar24 == bVar4)" ( (binary_expression "bVar24 == bVar4" identifier == identifier) )) (goto_statement "goto LAB_003487c9;" goto statement_identifier ;))) }) (else_clause "else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }" else (compound_statement "{\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }" { (expression_statement "uVar17 = local_a8 * uVar18;" (assignment_expression "uVar17 = local_a8 * uVar18" identifier = (binary_expression "local_a8 * uVar18" identifier * identifier)) ;) (expression_statement "local_a8 = (long)iVar6 + uVar17;" (assignment_expression "local_a8 = (long)iVar6 + uVar17" identifier = (binary_expression "(long)iVar6 + uVar17" (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;" (assignment_expression "local_6a = local_6a | uVar10 - (long)iVar6 < uVar17" identifier = (binary_expression "local_6a | uVar10 - (long)iVar6 < uVar17" identifier | (binary_expression "uVar10 - (long)iVar6 < uVar17" (binary_expression "uVar10 - (long)iVar6" identifier - (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) < identifier))) ;) (expression_statement "uVar17 = param_2[2];" (assignment_expression "uVar17 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;" if (parenthesized_expression "((ulong)param_2[3] <= uVar17)" ( (binary_expression "(ulong)param_2[3] <= uVar17" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_00348ac3;" goto statement_identifier ;)) (labeled_statement "LAB_00348793:\n          param_2[2] = uVar17 + 1;" statement_identifier : (expression_statement "param_2[2] = uVar17 + 1;" (assignment_expression "param_2[2] = uVar17 + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar17 + 1" identifier + number_literal)) ;)) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348ae0;" goto statement_identifier ;)) (labeled_statement "LAB_003487ac:\n          bVar4 = false;" statement_identifier : (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;)) (if_statement "if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;" if (parenthesized_expression "(local_c0 == (long *)0x0 || !bVar25)" ( (binary_expression "local_c0 == (long *)0x0 || !bVar25" (binary_expression "local_c0 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar25" ! identifier)) )) (goto_statement "goto LAB_003487c0;" goto statement_identifier ;)) (labeled_statement "LAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;" statement_identifier : (expression_statement "bVar24 = local_c0 != (long *)0x0;" (assignment_expression "bVar24 = local_c0 != (long *)0x0" identifier = (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ;)) (if_statement "if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }" if (parenthesized_expression "((ulong)local_c0[3] <= (ulong)local_c0[2])" ( (binary_expression "(ulong)local_c0[3] <= (ulong)local_c0[2]" (cast_expression "(ulong)local_c0[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_c0[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[2]" identifier [ number_literal ]))) )) (compound_statement "{\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }" { comment (expression_statement "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0)" identifier = (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" ( (pointer_expression "**(code **)(*local_c0 + 0x48)" * (pointer_expression "*(code **)(*local_c0 + 0x48)" * (cast_expression "(code **)(*local_c0 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_c0 + 0x48)" ( (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" * identifier) + number_literal) ))))) )) (argument_list "(local_c0)" ( identifier )))) ;) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }" if (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) (compound_statement "{\n              plVar2 = local_c0;\n            }" { (expression_statement "plVar2 = local_c0;" (assignment_expression "plVar2 = local_c0" identifier = identifier) ;) })) (expression_statement "local_c0 = plVar2;" (assignment_expression "local_c0 = plVar2" identifier = identifier) ;) (expression_statement "bVar24 = iVar6 == -1 && (bVar24 && bVar25);" (assignment_expression "bVar24 = iVar6 == -1 && (bVar24 && bVar25)" identifier = (binary_expression "iVar6 == -1 && (bVar24 && bVar25)" (binary_expression "iVar6 == -1" identifier == number_literal) && (parenthesized_expression "(bVar24 && bVar25)" ( (binary_expression "bVar24 && bVar25" identifier && identifier) )))) ;) (goto_statement "goto LAB_003487c0;" goto statement_identifier ;) })) (if_statement "if (bVar4 == false) goto LAB_003487c9;" if (parenthesized_expression "(bVar4 == false)" ( (binary_expression "bVar4 == false" identifier == false) )) (goto_statement "goto LAB_003487c9;" goto statement_identifier ;)) }))) (if_statement "if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar14 = 0xffffffff;\n        }" { (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" else (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          uVar14 = (uint)*(byte *)param_2[2];\n        }" { (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" else (compound_statement "{\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" { comment (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" if (parenthesized_expression "(uVar14 == 0xffffffff)" ( (binary_expression "uVar14 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) })) }))))) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" identifier = number_literal) ;) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" identifier = false) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }" else (compound_statement "{\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }" { (if_statement "if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" if (parenthesized_expression "(local_6b == false)" ( (binary_expression "local_6b == false" identifier == false) )) (compound_statement "{\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" { (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );" do (compound_statement "{\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      }" { (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (expression_statement "cVar5 = (char)uVar14;" (assignment_expression "cVar5 = (char)uVar14" identifier = (cast_expression "(char)uVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }" if (parenthesized_expression "((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5))" ( (binary_expression "(*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)" (parenthesized_expression "(*(byte *)(lVar22 + 0x20) == 0)" ( (binary_expression "*(byte *)(lVar22 + 0x20) == 0" (pointer_expression "*(byte *)(lVar22 + 0x20)" * (cast_expression "(byte *)(lVar22 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(char *)(lVar22 + 0x49) != cVar5)" ( (binary_expression "*(char *)(lVar22 + 0x49) != cVar5" (pointer_expression "*(char *)(lVar22 + 0x49)" * (cast_expression "(char *)(lVar22 + 0x49)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x49)" ( (binary_expression "lVar22 + 0x49" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }" { (if_statement "if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;" if (parenthesized_expression "((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             )" ( (binary_expression "(cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)" (parenthesized_expression "(cVar5 == *(char *)(lVar22 + 0x48))" ( (binary_expression "cVar5 == *(char *)(lVar22 + 0x48)" identifier == (pointer_expression "*(char *)(lVar22 + 0x48)" * (cast_expression "(char *)(lVar22 + 0x48)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x48)" ( (binary_expression "lVar22 + 0x48" identifier + number_literal) ))))) )) || (parenthesized_expression "(pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)" ( (comma_expression "pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0" (assignment_expression "pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0)" identifier = (call_expression "memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0)" identifier (argument_list "((void *)(lVar22 + 0x72),(int)cVar5,local_a0)" ( (cast_expression "(void *)(lVar22 + 0x72)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x72)" ( (binary_expression "lVar22 + 0x72" identifier + number_literal) ))) , (cast_expression "(int)cVar5" ( (type_descriptor "int" primitive_type) ) identifier) , identifier )))) , (binary_expression "pvVar11 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_003489c8;" goto statement_identifier ;)) (expression_statement "iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);" (assignment_expression "iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72)" identifier = (binary_expression "(int)pvVar11 - (int)(void *)(lVar22 + 0x72)" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)(void *)(lVar22 + 0x72)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(void *)(lVar22 + 0x72)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x72)" ( (binary_expression "lVar22 + 0x72" identifier + number_literal) )))))) ;) (if_statement "if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }" if (parenthesized_expression "(0xf < iVar6)" ( (binary_expression "0xf < iVar6" number_literal < identifier) )) (compound_statement "{\n            iVar6 = iVar6 + -6;\n          }" { (expression_statement "iVar6 = iVar6 + -6;" (assignment_expression "iVar6 = iVar6 + -6" identifier = (binary_expression "iVar6 + -6" identifier + number_literal)) ;) })) (if_statement "if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }" if (parenthesized_expression "(local_a8 <= uVar10 / uVar18)" ( (binary_expression "local_a8 <= uVar10 / uVar18" identifier <= (binary_expression "uVar10 / uVar18" identifier / identifier)) )) (compound_statement "{\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }" { (expression_statement "uVar17 = local_a8 * uVar18;" (assignment_expression "uVar17 = local_a8 * uVar18" identifier = (binary_expression "local_a8 * uVar18" identifier * identifier)) ;) (expression_statement "local_a8 = (long)iVar6 + uVar17;" (assignment_expression "local_a8 = (long)iVar6 + uVar17" identifier = (binary_expression "(long)iVar6 + uVar17" (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;" (assignment_expression "local_6a = local_6a | uVar10 - (long)iVar6 < uVar17" identifier = (binary_expression "local_6a | uVar10 - (long)iVar6 < uVar17" identifier | (binary_expression "uVar10 - (long)iVar6 < uVar17" (binary_expression "uVar10 - (long)iVar6" identifier - (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) < identifier))) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00348c3c;" goto statement_identifier ;) })) (expression_statement "uVar17 = param_2[2];" (assignment_expression "uVar17 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "local_6a = bVar3;" (assignment_expression "local_6a = bVar3" identifier = identifier) ;) (if_statement "if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;" if (parenthesized_expression "(uVar17 < (ulong)param_2[3])" ( (binary_expression "uVar17 < (ulong)param_2[3]" identifier < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348c46;" goto statement_identifier ;)) (labeled_statement "LAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);" statement_identifier : (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;)) (expression_statement "local_b8._0_1_ = 0;" (assignment_expression "local_b8._0_1_ = 0" (field_expression "local_b8._0_1_" identifier . field_identifier) = number_literal) ;) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (compound_statement "{\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }" { (labeled_statement "LAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" statement_identifier : (expression_statement "iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar6 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;)) (expression_statement "local_b8._0_1_ = 0;" (assignment_expression "local_b8._0_1_ = 0" (field_expression "local_b8._0_1_" identifier . field_identifier) = number_literal) ;) (if_statement "if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b8._0_1_ = bVar3;" (assignment_expression "local_b8._0_1_ = bVar3" (field_expression "local_b8._0_1_" identifier . field_identifier) = identifier) ;) })) })) }) (else_clause "else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }" else (compound_statement "{\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }" { (if_statement "if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }" { (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" identifier = number_literal) ;) (expression_statement "local_6b = (bool)*(byte *)(lVar22 + 0x20);" (assignment_expression "local_6b = (bool)*(byte *)(lVar22 + 0x20)" identifier = (cast_expression "(bool)*(byte *)(lVar22 + 0x20)" ( (type_descriptor "bool" primitive_type) ) (pointer_expression "*(byte *)(lVar22 + 0x20)" * (cast_expression "(byte *)(lVar22 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) )))))) ;) (goto_statement "goto joined_r0x003487e4;" goto statement_identifier ;) })) (expression_statement "uVar1 = local_50 + 1;" (assignment_expression "uVar1 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (if_statement "if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n            uVar13 = 0xf;\n          }" { (expression_statement "uVar13 = 0xf;" (assignment_expression "uVar13 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }" else (compound_statement "{\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }" { (expression_statement "uVar13 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar13 = CONCAT71(uStack_47,local_48)" identifier = (call_expression "CONCAT71(uStack_47,local_48)" identifier (argument_list "(uStack_47,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }" if (parenthesized_expression "(uVar13 < uVar1)" ( (binary_expression "uVar13 < uVar1" identifier < identifier) )) (compound_statement "{\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }" { (expression_statement "FUN_002e1960(&local_58,local_50,0,0,1);" (call_expression "FUN_002e1960(&local_58,local_50,0,0,1)" identifier (argument_list "(&local_58,local_50,0,0,1)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (expression_statement "local_b0 = (undefined1)iVar8;" (assignment_expression "local_b0 = (undefined1)iVar8" identifier = (cast_expression "(undefined1)iVar8" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "local_58[uVar17] = local_b0;" (assignment_expression "local_58[uVar17] = local_b0" (subscript_expression "local_58[uVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_58[uVar1] = 0;" (assignment_expression "local_58[uVar1] = 0" (subscript_expression "local_58[uVar1]" identifier [ identifier ]) = number_literal) ;) (expression_statement "local_50 = uVar1;" (assignment_expression "local_50 = uVar1" identifier = identifier) ;) (labeled_statement "LAB_00348c3c:\n          uVar17 = param_2[2];" statement_identifier : (expression_statement "uVar17 = param_2[2];" (assignment_expression "uVar17 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;)) (if_statement "if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;" if (parenthesized_expression "((ulong)param_2[3] <= uVar17)" ( (binary_expression "(ulong)param_2[3] <= uVar17" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_00348c9f;" goto statement_identifier ;)) (labeled_statement "LAB_00348c46:\n          local_b8._0_1_ = 0;" statement_identifier : (expression_statement "local_b8._0_1_ = 0;" (assignment_expression "local_b8._0_1_ = 0" (field_expression "local_b8._0_1_" identifier . field_identifier) = number_literal) ;)) (expression_statement "param_2[2] = uVar17 + 1;" (assignment_expression "param_2[2] = uVar17 + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348cc0;" goto statement_identifier ;)) }))) (expression_statement "bVar4 = local_c0 != (long *)0x0 && bVar25;" (assignment_expression "bVar4 = local_c0 != (long *)0x0 && bVar25" identifier = (binary_expression "local_c0 != (long *)0x0 && bVar25" (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar24 = bVar25;" (assignment_expression "bVar24 = bVar25" identifier = identifier) ;) (if_statement "if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }" { (if_statement "if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }" if (parenthesized_expression "((ulong)local_c0[2] < (ulong)local_c0[3])" ( (binary_expression "(ulong)local_c0[2] < (ulong)local_c0[3]" (cast_expression "(ulong)local_c0[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_c0[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[3]" identifier [ number_literal ]))) )) (compound_statement "{\n            bVar24 = false;\n          }" { (expression_statement "bVar24 = false;" (assignment_expression "bVar24 = false" identifier = false) ;) }) (else_clause "else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }" else (compound_statement "{\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }" { (expression_statement "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0)" identifier = (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" ( (pointer_expression "**(code **)(*local_c0 + 0x48)" * (pointer_expression "*(code **)(*local_c0 + 0x48)" * (cast_expression "(code **)(*local_c0 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_c0 + 0x48)" ( (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" * identifier) + number_literal) ))))) )) (argument_list "(local_c0)" ( identifier )))) ;) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }" if (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) (compound_statement "{\n              plVar2 = local_c0;\n            }" { (expression_statement "plVar2 = local_c0;" (assignment_expression "plVar2 = local_c0" identifier = identifier) ;) })) (expression_statement "bVar24 = iVar6 == -1 && bVar4;" (assignment_expression "bVar24 = iVar6 == -1 && bVar4" identifier = (binary_expression "iVar6 == -1 && bVar4" (binary_expression "iVar6 == -1" identifier == number_literal) && identifier)) ;) (expression_statement "local_c0 = plVar2;" (assignment_expression "local_c0 = plVar2" identifier = identifier) ;) }))) })) (if_statement "if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;" if (parenthesized_expression "((bool)(byte)local_b8 == bVar24)" ( (binary_expression "(bool)(byte)local_b8 == bVar24" (cast_expression "(bool)(byte)local_b8" ( (type_descriptor "bool" primitive_type) ) (cast_expression "(byte)local_b8" ( (type_descriptor "byte" type_identifier) ) identifier)) == identifier) )) (goto_statement "goto code_r0x00348c77;" goto statement_identifier ;)) (if_statement "if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar14 = 0xffffffff;\n        }" { (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" else (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          uVar14 = (uint)*(byte *)param_2[2];\n        }" { (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" else (compound_statement "{\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" { comment (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" if (parenthesized_expression "(uVar14 == 0xffffffff)" ( (binary_expression "uVar14 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) })) }))))) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" identifier = number_literal) ;) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" identifier = false) ;) }))) (labeled_statement "joined_r0x003487e4:\n  if (uVar17 == 0) {\n    local_50 = 0;\n    if ((bVar19) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }\n  else {\n    local_b0 = (undefined1)iVar8;\n    uVar10 = uVar17 + 1;\n    if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }\n    local_58[uVar17] = local_b0;\n    local_58[uVar10] = 0;\n    local_50 = uVar10;\n    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" statement_identifier : (if_statement "if (uVar17 == 0) {\n    local_50 = 0;\n    if ((bVar19) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }\n  else {\n    local_b0 = (undefined1)iVar8;\n    uVar10 = uVar17 + 1;\n    if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }\n    local_58[uVar17] = local_b0;\n    local_58[uVar10] = 0;\n    local_50 = uVar10;\n    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n    local_50 = 0;\n    if ((bVar19) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }" { (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (if_statement "if ((bVar19) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }" if (parenthesized_expression "((bVar19) || (iVar8 != 0))" ( (binary_expression "(bVar19) || (iVar8 != 0)" (parenthesized_expression "(bVar19)" ( identifier )) || (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) ))) )) (compound_statement "{\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }" { (labeled_statement "LAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }" statement_identifier : (if_statement "if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }" if (parenthesized_expression "(local_6b == false)" ( (binary_expression "local_6b == false" identifier == false) )) (compound_statement "{\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }" { (if_statement "if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }" if (parenthesized_expression "(local_6a == 0)" ( (binary_expression "local_6a == 0" identifier == number_literal) )) (compound_statement "{\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }" { (expression_statement "uVar10 = -local_a8;" (assignment_expression "uVar10 = -local_a8" identifier = (unary_expression "-local_a8" - identifier)) ;) (if_statement "if (!bVar23) {\n            uVar10 = local_a8;\n          }" if (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) (compound_statement "{\n            uVar10 = local_a8;\n          }" { (expression_statement "uVar10 = local_a8;" (assignment_expression "uVar10 = local_a8" identifier = identifier) ;) })) (expression_statement "*param_8 = uVar10;" (assignment_expression "*param_8 = uVar10" (pointer_expression "*param_8" * identifier) = identifier) ;) }) (else_clause "else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }" else (compound_statement "{\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }" { (expression_statement "uVar10 = 0x8000000000000000;" (assignment_expression "uVar10 = 0x8000000000000000" identifier = number_literal) ;) (if_statement "if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }" if (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) (compound_statement "{\n            uVar10 = 0x7fffffffffffffff;\n          }" { (expression_statement "uVar10 = 0x7fffffffffffffff;" (assignment_expression "uVar10 = 0x7fffffffffffffff" identifier = number_literal) ;) })) (expression_statement "*param_8 = uVar10;" (assignment_expression "*param_8 = uVar10" (pointer_expression "*param_8" * identifier) = identifier) ;) (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" * identifier) = number_literal) ;) }))) (goto_statement "goto LAB_0034881d;" goto statement_identifier ;) }))) })) }) (else_clause "else {\n    local_b0 = (undefined1)iVar8;\n    uVar10 = uVar17 + 1;\n    if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }\n    local_58[uVar17] = local_b0;\n    local_58[uVar10] = 0;\n    local_50 = uVar10;\n    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" else (compound_statement "{\n    local_b0 = (undefined1)iVar8;\n    uVar10 = uVar17 + 1;\n    if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }\n    local_58[uVar17] = local_b0;\n    local_58[uVar10] = 0;\n    local_50 = uVar10;\n    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" { (expression_statement "local_b0 = (undefined1)iVar8;" (assignment_expression "local_b0 = (undefined1)iVar8" identifier = (cast_expression "(undefined1)iVar8" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uVar17 + 1;" (assignment_expression "uVar10 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (if_statement "if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n      uVar18 = 0xf;\n    }" { (expression_statement "uVar18 = 0xf;" (assignment_expression "uVar18 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }" else (compound_statement "{\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }" { (expression_statement "uVar18 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar18 = CONCAT71(uStack_47,local_48)" identifier = (call_expression "CONCAT71(uStack_47,local_48)" identifier (argument_list "(uStack_47,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }" if (parenthesized_expression "(uVar18 < uVar10)" ( (binary_expression "uVar18 < uVar10" identifier < identifier) )) (compound_statement "{\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }" { (expression_statement "local_50 = uVar17;" (assignment_expression "local_50 = uVar17" identifier = identifier) ;) (expression_statement "FUN_002e1960(&local_58,uVar17,0,0,1);" (call_expression "FUN_002e1960(&local_58,uVar17,0,0,1)" identifier (argument_list "(&local_58,uVar17,0,0,1)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (expression_statement "local_58[uVar17] = local_b0;" (assignment_expression "local_58[uVar17] = local_b0" (subscript_expression "local_58[uVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_58[uVar10] = 0;" (assignment_expression "local_58[uVar10] = 0" (subscript_expression "local_58[uVar10]" identifier [ identifier ]) = number_literal) ;) (expression_statement "local_50 = uVar10;" (assignment_expression "local_50 = uVar10" identifier = identifier) ;) (expression_statement "cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);" (assignment_expression "cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58)" identifier = (call_expression "FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58)" identifier (argument_list "(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58)" ( (pointer_expression "*(undefined8 *)(lVar22 + 0x10)" * (cast_expression "(undefined8 *)(lVar22 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x10)" ( (binary_expression "lVar22 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(lVar22 + 0x18)" * (cast_expression "(undefined8 *)(lVar22 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x18)" ( (binary_expression "lVar22 + 0x18" identifier + number_literal) )))) , (pointer_expression "&local_58" & identifier) )))) ;) (if_statement "if (cVar5 == '\0') {\n      *param_7 = 4;\n    }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_7 = 4;\n    }" { (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" * identifier) = number_literal) ;) })) (if_statement "if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;" if (parenthesized_expression "(((iVar8 != 0) || (bVar19)) || (local_50 != 0))" ( (binary_expression "((iVar8 != 0) || (bVar19)) || (local_50 != 0)" (parenthesized_expression "((iVar8 != 0) || (bVar19))" ( (binary_expression "(iVar8 != 0) || (bVar19)" (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) || (parenthesized_expression "(bVar19)" ( identifier ))) )) || (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_00348a5d;" goto statement_identifier ;)) })))) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" * identifier) = number_literal) ;) (labeled_statement "LAB_0034881d:\n  if (bVar21 != 0) {\n    *param_7 = *param_7 | 2;\n  }" statement_identifier : (if_statement "if (bVar21 != 0) {\n    *param_7 = *param_7 | 2;\n  }" if (parenthesized_expression "(bVar21 != 0)" ( (binary_expression "bVar21 != 0" identifier != number_literal) )) (compound_statement "{\n    *param_7 = *param_7 | 2;\n  }" { (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 2" (pointer_expression "*param_7" * identifier) | number_literal)) ;) }))) (if_statement "if (local_58 != &local_48) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_58 != &local_48)" ( (binary_expression "local_58 != &local_48" identifier != (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "auVar26._8_8_ = param_3 & 0xffffffff00000000 | local_b8;" (assignment_expression "auVar26._8_8_ = param_3 & 0xffffffff00000000 | local_b8" (field_expression "auVar26._8_8_" identifier . field_identifier) = (binary_expression "param_3 & 0xffffffff00000000 | local_b8" (binary_expression "param_3 & 0xffffffff00000000" identifier & number_literal) | identifier)) ;) (expression_statement "auVar26._0_8_ = param_2;" (assignment_expression "auVar26._0_8_ = param_2" (field_expression "auVar26._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar26;" return identifier ;) (labeled_statement "code_r0x00348c77:\n  local_b8 = 0xffffffff;" statement_identifier : (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "bVar21 = bVar3;" (assignment_expression "bVar21 = bVar3" identifier = identifier) ;) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (goto_statement "goto joined_r0x003487e4;" goto statement_identifier ;) (labeled_statement "LAB_003487c9:\n  local_b8 = 0xffffffff;" statement_identifier : (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "bVar21 = 1;" (assignment_expression "bVar21 = 1" identifier = number_literal) ;) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (goto_statement "goto joined_r0x003487e4;" goto statement_identifier ;) (labeled_statement "LAB_003489c8:\n  bVar21 = 0;" statement_identifier : (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" identifier = number_literal) ;)) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (goto_statement "goto joined_r0x003487e4;" goto statement_identifier ;) (ERROR "}" }))
(translation_unit "/* std::istreambuf_iterator<char, std::char_traits<char> > std::num_get<char,\n   std::istreambuf_iterator<char, std::char_traits<char> >\n   >::_M_extract_int[abi:cxx11]<long>(std::istreambuf_iterator<char, std::char_traits<char> >,\n   std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&,\n   long&) const */\n\nundefined1  [16]\nstd::num_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::\n_M_extract_int_abi_cxx11_<long>\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,long param_6,\n          uint *param_7,ulong *param_8)\n\n{\n  ulong uVar1;\n  long *plVar2;\n  byte bVar3;\n  bool bVar4;\n  char cVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  ulong uVar9;\n  void *pvVar10;\n  __numpunct_cache<char> *this;\n  ulong uVar11;\n  uint uVar12;\n  uint uVar13;\n  char cVar14;\n  ulong uVar15;\n  ulong uVar16;\n  bool bVar17;\n  uint uVar18;\n  byte bVar19;\n  long lVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  undefined1 auVar24 [16];\n  long *local_c0;\n  ulong local_b8;\n  undefined1 local_b0;\n  ulong local_a8;\n  ulong local_a0;\n  bool local_6b;\n  byte local_6a;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48;\n  undefined7 uStack_47;\n  \n  local_b8 = param_3 & 0xffffffff;\n  uVar9 = locale::id::_M_id((id *)&numpunct<char>::id);\n  plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar9 * 8);\n  lVar20 = *plVar2;\n  if (lVar20 == 0) {\n                    /* try { // try from 00348f25 to 00348f29 has its CatchHandler @ 003492e7 */\n    this = (__numpunct_cache<char> *)operator_new(0x90);\n    *(undefined4 *)(this + 8) = 0;\n    this[0x20] = (__numpunct_cache<char>)0x0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined ***)this = &PTR____numpunct_cache_00439298;\n    *(undefined8 *)(this + 0x18) = 0;\n    *(undefined8 *)(this + 0x28) = 0;\n    *(undefined8 *)(this + 0x30) = 0;\n    *(undefined8 *)(this + 0x38) = 0;\n    *(undefined8 *)(this + 0x40) = 0;\n    *(undefined2 *)(this + 0x48) = 0;\n    this[0x88] = (__numpunct_cache<char>)0x0;\n                    /* try { // try from 00348f92 to 00348f96 has its CatchHandler @ 003492e5 */\n    __numpunct_cache<char>::_M_cache(this,(locale *)(param_6 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar9);\n    lVar20 = *plVar2;\n  }\n  uVar13 = *(uint *)(param_6 + 0x18);\n  uVar12 = uVar13 & 0x4a;\n  iVar6 = 8;\n  if (uVar12 != 0x40) {\n    iVar6 = 0x10;\n    if (uVar12 != 8) {\n      iVar6 = 10;\n    }\n  }\n  bVar22 = (uint)param_3 == 0xffffffff;\n  bVar21 = param_2 != (long *)0x0 && bVar22;\n  bVar17 = bVar22;\n  if (bVar21) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar17 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar17 = iVar8 == -1 && bVar21;\n    }\n  }\n  uVar13 = uVar13 & 0x4a;\n  bVar23 = param_5 == -1;\n  bVar4 = param_4 != (long *)0x0 && bVar23;\n  local_c0 = param_4;\n  bVar21 = bVar23;\n  if (bVar4) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar21 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar21 = iVar8 == -1 && bVar4;\n    }\n  }\n  if (bVar21 == bVar17) {\n    cVar5 = *(char *)(lVar20 + 0x20);\n    bVar21 = false;\n    uVar12 = 0;\n    bVar17 = false;\n    local_6b = true;\n    iVar8 = 0;\n  }\n  else {\n    if ((param_2 == (long *)0x0) || (!bVar22)) {\n      uVar12 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar12 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar12 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar12 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar20 + 0x20);\n    cVar14 = (char)uVar12;\n    bVar21 = *(char *)(lVar20 + 0x6e) == cVar14;\n    if ((bVar21) || (*(char *)(lVar20 + 0x6f) == cVar14)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar20 + 0x49) != cVar14)) &&\n         (*(char *)(lVar20 + 0x48) != cVar14)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar17 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar17 = iVar8 == -1;\n          if (bVar17) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar22 == bVar17) {\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          bVar17 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar12 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar12 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar20 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar21 = false;\n    }\n    bVar17 = false;\n    iVar8 = 0;\n    do {\n      uVar18 = (uint)local_b8;\n      cVar14 = (char)uVar12;\n      if (((cVar5 != '\0') && (*(char *)(lVar20 + 0x49) == cVar14)) ||\n         (*(char *)(lVar20 + 0x48) == cVar14)) break;\n      bVar22 = bVar23;\n      if (*(char *)(lVar20 + 0x72) == cVar14) {\n        bVar4 = (bool)(iVar6 == 10 | bVar17 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar17 = iVar6 == 8 || uVar13 == 0;\n        if (iVar6 != 8 && uVar13 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar17 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar9 = param_2[2];\n        if ((ulong)param_2[3] <= uVar9) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar9 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348940;\nLAB_00348646:\n        if (bVar22 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar17) break;\nLAB_003485d9:\n        if ((*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14)) {\n          bVar17 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar13 == 0;\n        if (iVar6 != 0x10 && uVar13 != 0) {\n          bVar17 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar17 = false;\nLAB_0034860e:\n        uVar9 = param_2[2];\n        if (uVar9 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar23) goto LAB_00348646;\nLAB_00348940:\n        bVar22 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar22 = iVar7 == -1 && (bVar22 && bVar23);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar12 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar20 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar18 = 0xffffffff;\n    } while (bVar17);\n    local_b8 = (ulong)uVar18;\n    local_6b = false;\n  }\nLAB_00348669:\n  local_a0 = 0x16;\n  if (iVar6 != 0x10) {\nLAB_00348678:\n    local_a0 = (ulong)iVar6;\n  }\n  bVar19 = local_6b;\n  local_48 = 0;\n  local_58 = &local_48;\n  local_50 = 0;\n  if (cVar5 != '\0') {\n    std::string::reserve((string *)&local_58,0x20);\n  }\n  uVar16 = (ulong)iVar6;\n  bVar3 = *(byte *)(lVar20 + 0x88);\n  uVar9 = 0x7fffffffffffffff;\n  if (bVar21) {\n    uVar9 = 0x8000000000000000;\n  }\n  uVar15 = local_50;\n  if (bVar3 == 0) {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar12;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar22 = bVar23;\n        if (uVar9 / uVar16 < local_a8) {\n          local_6a = 1;\n          uVar15 = param_2[2];\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar22 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar15 = local_a8 * uVar16;\n          local_a8 = (long)iVar6 + uVar15;\n          local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n          uVar15 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar23) goto LAB_003487c0;\nLAB_00348b10:\n          bVar22 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar6 == -1 && (bVar22 && bVar23);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_6a = 0;\n    local_6b = false;\n    local_a8 = 0;\n  }\n  else {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar15 = local_50;\n        cVar5 = (char)uVar12;\n        if ((*(byte *)(lVar20 + 0x20) == 0) || (*(char *)(lVar20 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar20 + 0x48)) ||\n             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar10 - (int)(void *)(lVar20 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar9 / uVar16) {\n            uVar15 = local_a8 * uVar16;\n            local_a8 = (long)iVar6 + uVar15;\n            local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar15 = param_2[2];\n          local_6a = bVar3;\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar19 = 0;\n            local_6b = (bool)*(byte *)(lVar20 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar11 = 0xf;\n          }\n          else {\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar11 < uVar1) {\n            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar15] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar15 = param_2[2];\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar22 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar22) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }\njoined_r0x003487e4:\n  if (uVar15 == 0) {\n    local_50 = 0;\n    if ((bVar17) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar9 = -local_a8;\n          if (!bVar21) {\n            uVar9 = local_a8;\n          }\n          *param_8 = uVar9;\n        }\n        else {\n          uVar9 = 0x8000000000000000;\n          if (!bVar21) {\n            uVar9 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar9;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }\n  else {\n    local_b0 = (undefined1)iVar8;\n    uVar9 = uVar15 + 1;\n    if (local_58 == &local_48) {\n      uVar16 = 0xf;\n    }\n    else {\n      uVar16 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar16 < uVar9) {\n      local_50 = uVar15;\n      std::string::_M_mutate((string *)&local_58,uVar15,0,(char *)0x0,1);\n    }\n    local_58[uVar15] = local_b0;\n    local_58[uVar9] = 0;\n    local_50 = uVar9;\n    cVar5 = __verify_grouping(*(char **)(lVar20 + 0x10),*(ulong *)(lVar20 + 0x18),\n                              (string *)&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar17)) || (local_50 != 0)) goto LAB_00348a5d;\n  }\n  *param_8 = 0;\n  *param_7 = 4;\nLAB_0034881d:\n  if (bVar19 != 0) {\n    *param_7 = *param_7 | 2;\n  }\n  if (local_58 != &local_48) {\n    operator_delete(local_58);\n  }\n  auVar24._8_8_ = param_3 & 0xffffffff00000000 | local_b8;\n  auVar24._0_8_ = param_2;\n  return auVar24;\ncode_r0x00348c77:\n  local_b8 = 0xffffffff;\n  bVar19 = bVar3;\n  uVar15 = local_50;\n  goto joined_r0x003487e4;\nLAB_003487c9:\n  local_b8 = 0xffffffff;\n  bVar19 = 1;\n  uVar15 = local_50;\n  goto joined_r0x003487e4;\nLAB_003489c8:\n  bVar19 = 0;\n  uVar15 = local_50;\n  goto joined_r0x003487e4;\n}\n\n" comment (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (labeled_statement "std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::\n_M_extract_int_abi_cxx11_<long>\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,long param_6,\n          uint *param_7,ulong *param_8)" statement_identifier (ERROR "::num_get<char,std::istreambuf_iterator<char,std:" : : (comma_expression "num_get<char,std" (binary_expression "num_get<char" identifier < identifier) , identifier) : : (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" identifier < identifier) , identifier) :) : (expression_statement "char_traits<char>>>::\n_M_extract_int_abi_cxx11_<long>\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,long param_6,\n          uint *param_7,ulong *param_8)" (binary_expression "char_traits<char>>>::\n_M_extract_int_abi_cxx11_<long>\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,long param_6,\n          uint *param_7,ulong *param_8)" (binary_expression "char_traits<char>>>::\n_M_extract_int_abi_cxx11_<long" (binary_expression "char_traits<char>>>::\n_M_extract_int_abi_cxx11_" identifier < (binary_expression "char>>>::\n_M_extract_int_abi_cxx11_" identifier >> (ERROR ">::" > : :) identifier)) < identifier) > (parenthesized_expression "(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,long param_6,\n          uint *param_7,ulong *param_8)" ( (comma_expression "undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,long param_6,\n          uint *param_7,ulong *param_8" identifier (ERROR "param_1" identifier) , (comma_expression "long *param_2,ulong param_3,long *param_4,int param_5,long param_6,\n          uint *param_7,ulong *param_8" (binary_expression "long *param_2" identifier * identifier) , (ERROR "ulong" identifier) (comma_expression "param_3,long *param_4,int param_5,long param_6,\n          uint *param_7,ulong *param_8" identifier , (comma_expression "long *param_4,int param_5,long param_6,\n          uint *param_7,ulong *param_8" (binary_expression "long *param_4" identifier * identifier) , (ERROR "int" identifier) (comma_expression "param_5,long param_6,\n          uint *param_7,ulong *param_8" identifier , (ERROR "long" identifier) (comma_expression "param_6,\n          uint *param_7,ulong *param_8" identifier , (comma_expression "uint *param_7,ulong *param_8" (binary_expression "uint *param_7" identifier * identifier) , (binary_expression "ulong *param_8" identifier * identifier)))))))) ))) ;)) (compound_statement "{\n  ulong uVar1;\n  long *plVar2;\n  byte bVar3;\n  bool bVar4;\n  char cVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  ulong uVar9;\n  void *pvVar10;\n  __numpunct_cache<char> *this;\n  ulong uVar11;\n  uint uVar12;\n  uint uVar13;\n  char cVar14;\n  ulong uVar15;\n  ulong uVar16;\n  bool bVar17;\n  uint uVar18;\n  byte bVar19;\n  long lVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  undefined1 auVar24 [16];\n  long *local_c0;\n  ulong local_b8;\n  undefined1 local_b0;\n  ulong local_a8;\n  ulong local_a0;\n  bool local_6b;\n  byte local_6a;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48;\n  undefined7 uStack_47;\n  \n  local_b8 = param_3 & 0xffffffff;\n  uVar9 = locale::id::_M_id((id *)&numpunct<char>::id);\n  plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar9 * 8);\n  lVar20 = *plVar2;\n  if (lVar20 == 0) {\n                    /* try { // try from 00348f25 to 00348f29 has its CatchHandler @ 003492e7 */\n    this = (__numpunct_cache<char> *)operator_new(0x90);\n    *(undefined4 *)(this + 8) = 0;\n    this[0x20] = (__numpunct_cache<char>)0x0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined ***)this = &PTR____numpunct_cache_00439298;\n    *(undefined8 *)(this + 0x18) = 0;\n    *(undefined8 *)(this + 0x28) = 0;\n    *(undefined8 *)(this + 0x30) = 0;\n    *(undefined8 *)(this + 0x38) = 0;\n    *(undefined8 *)(this + 0x40) = 0;\n    *(undefined2 *)(this + 0x48) = 0;\n    this[0x88] = (__numpunct_cache<char>)0x0;\n                    /* try { // try from 00348f92 to 00348f96 has its CatchHandler @ 003492e5 */\n    __numpunct_cache<char>::_M_cache(this,(locale *)(param_6 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar9);\n    lVar20 = *plVar2;\n  }\n  uVar13 = *(uint *)(param_6 + 0x18);\n  uVar12 = uVar13 & 0x4a;\n  iVar6 = 8;\n  if (uVar12 != 0x40) {\n    iVar6 = 0x10;\n    if (uVar12 != 8) {\n      iVar6 = 10;\n    }\n  }\n  bVar22 = (uint)param_3 == 0xffffffff;\n  bVar21 = param_2 != (long *)0x0 && bVar22;\n  bVar17 = bVar22;\n  if (bVar21) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar17 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar17 = iVar8 == -1 && bVar21;\n    }\n  }\n  uVar13 = uVar13 & 0x4a;\n  bVar23 = param_5 == -1;\n  bVar4 = param_4 != (long *)0x0 && bVar23;\n  local_c0 = param_4;\n  bVar21 = bVar23;\n  if (bVar4) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar21 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar21 = iVar8 == -1 && bVar4;\n    }\n  }\n  if (bVar21 == bVar17) {\n    cVar5 = *(char *)(lVar20 + 0x20);\n    bVar21 = false;\n    uVar12 = 0;\n    bVar17 = false;\n    local_6b = true;\n    iVar8 = 0;\n  }\n  else {\n    if ((param_2 == (long *)0x0) || (!bVar22)) {\n      uVar12 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar12 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar12 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar12 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar20 + 0x20);\n    cVar14 = (char)uVar12;\n    bVar21 = *(char *)(lVar20 + 0x6e) == cVar14;\n    if ((bVar21) || (*(char *)(lVar20 + 0x6f) == cVar14)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar20 + 0x49) != cVar14)) &&\n         (*(char *)(lVar20 + 0x48) != cVar14)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar17 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar17 = iVar8 == -1;\n          if (bVar17) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar22 == bVar17) {\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          bVar17 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar12 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar12 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar20 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar21 = false;\n    }\n    bVar17 = false;\n    iVar8 = 0;\n    do {\n      uVar18 = (uint)local_b8;\n      cVar14 = (char)uVar12;\n      if (((cVar5 != '\0') && (*(char *)(lVar20 + 0x49) == cVar14)) ||\n         (*(char *)(lVar20 + 0x48) == cVar14)) break;\n      bVar22 = bVar23;\n      if (*(char *)(lVar20 + 0x72) == cVar14) {\n        bVar4 = (bool)(iVar6 == 10 | bVar17 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar17 = iVar6 == 8 || uVar13 == 0;\n        if (iVar6 != 8 && uVar13 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar17 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar9 = param_2[2];\n        if ((ulong)param_2[3] <= uVar9) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar9 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348940;\nLAB_00348646:\n        if (bVar22 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar17) break;\nLAB_003485d9:\n        if ((*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14)) {\n          bVar17 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar13 == 0;\n        if (iVar6 != 0x10 && uVar13 != 0) {\n          bVar17 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar17 = false;\nLAB_0034860e:\n        uVar9 = param_2[2];\n        if (uVar9 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar23) goto LAB_00348646;\nLAB_00348940:\n        bVar22 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar22 = iVar7 == -1 && (bVar22 && bVar23);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar12 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar20 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar18 = 0xffffffff;\n    } while (bVar17);\n    local_b8 = (ulong)uVar18;\n    local_6b = false;\n  }\nLAB_00348669:\n  local_a0 = 0x16;\n  if (iVar6 != 0x10) {\nLAB_00348678:\n    local_a0 = (ulong)iVar6;\n  }\n  bVar19 = local_6b;\n  local_48 = 0;\n  local_58 = &local_48;\n  local_50 = 0;\n  if (cVar5 != '\0') {\n    std::string::reserve((string *)&local_58,0x20);\n  }\n  uVar16 = (ulong)iVar6;\n  bVar3 = *(byte *)(lVar20 + 0x88);\n  uVar9 = 0x7fffffffffffffff;\n  if (bVar21) {\n    uVar9 = 0x8000000000000000;\n  }\n  uVar15 = local_50;\n  if (bVar3 == 0) {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar12;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar22 = bVar23;\n        if (uVar9 / uVar16 < local_a8) {\n          local_6a = 1;\n          uVar15 = param_2[2];\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar22 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar15 = local_a8 * uVar16;\n          local_a8 = (long)iVar6 + uVar15;\n          local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n          uVar15 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar23) goto LAB_003487c0;\nLAB_00348b10:\n          bVar22 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar6 == -1 && (bVar22 && bVar23);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_6a = 0;\n    local_6b = false;\n    local_a8 = 0;\n  }\n  else {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar15 = local_50;\n        cVar5 = (char)uVar12;\n        if ((*(byte *)(lVar20 + 0x20) == 0) || (*(char *)(lVar20 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar20 + 0x48)) ||\n             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar10 - (int)(void *)(lVar20 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar9 / uVar16) {\n            uVar15 = local_a8 * uVar16;\n            local_a8 = (long)iVar6 + uVar15;\n            local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar15 = param_2[2];\n          local_6a = bVar3;\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar19 = 0;\n            local_6b = (bool)*(byte *)(lVar20 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar11 = 0xf;\n          }\n          else {\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar11 < uVar1) {\n            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar15] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar15 = param_2[2];\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar22 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar22) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }\njoined_r0x003487e4:\n  if (uVar15 == 0) {\n    local_50 = 0;\n    if ((bVar17) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar9 = -local_a8;\n          if (!bVar21) {\n            uVar9 = local_a8;\n          }\n          *param_8 = uVar9;\n        }\n        else {\n          uVar9 = 0x8000000000000000;\n          if (!bVar21) {\n            uVar9 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar9;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }\n  else {\n    local_b0 = (undefined1)iVar8;\n    uVar9 = uVar15 + 1;\n    if (local_58 == &local_48) {\n      uVar16 = 0xf;\n    }\n    else {\n      uVar16 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar16 < uVar9) {\n      local_50 = uVar15;\n      std::string::_M_mutate((string *)&local_58,uVar15,0,(char *)0x0,1);\n    }\n    local_58[uVar15] = local_b0;\n    local_58[uVar9] = 0;\n    local_50 = uVar9;\n    cVar5 = __verify_grouping(*(char **)(lVar20 + 0x10),*(ulong *)(lVar20 + 0x18),\n                              (string *)&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar17)) || (local_50 != 0)) goto LAB_00348a5d;\n  }\n  *param_8 = 0;\n  *param_7 = 4;\nLAB_0034881d:\n  if (bVar19 != 0) {\n    *param_7 = *param_7 | 2;\n  }\n  if (local_58 != &local_48) {\n    operator_delete(local_58);\n  }\n  auVar24._8_8_ = param_3 & 0xffffffff00000000 | local_b8;\n  auVar24._0_8_ = param_2;\n  return auVar24;\ncode_r0x00348c77:\n  local_b8 = 0xffffffff;\n  bVar19 = bVar3;\n  uVar15 = local_50;\n  goto joined_r0x003487e4;\nLAB_003487c9:\n  local_b8 = 0xffffffff;\n  bVar19 = 1;\n  uVar15 = local_50;\n  goto joined_r0x003487e4;\nLAB_003489c8:\n  bVar19 = 0;\n  uVar15 = local_50;\n  goto joined_r0x003487e4;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "void *pvVar10;" primitive_type (pointer_declarator "*pvVar10" * identifier) ;) (expression_statement "__numpunct_cache<char> *this;" (binary_expression "__numpunct_cache<char> *this" (binary_expression "__numpunct_cache<char" identifier < identifier) > (pointer_expression "*this" * identifier)) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "char cVar14;" primitive_type identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "long lVar20;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar21;" primitive_type identifier ;) (declaration "bool bVar22;" primitive_type identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "undefined1 auVar24 [16];" type_identifier (array_declarator "auVar24 [16]" identifier [ number_literal ]) ;) (declaration "long *local_c0;" (sized_type_specifier "long" long) (pointer_declarator "*local_c0" * identifier) ;) (declaration "ulong local_b8;" type_identifier identifier ;) (declaration "undefined1 local_b0;" type_identifier identifier ;) (declaration "ulong local_a8;" type_identifier identifier ;) (declaration "ulong local_a0;" type_identifier identifier ;) (declaration "bool local_6b;" primitive_type identifier ;) (declaration "byte local_6a;" type_identifier identifier ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "undefined1 local_48;" type_identifier identifier ;) (declaration "undefined7 uStack_47;" type_identifier identifier ;) (expression_statement "local_b8 = param_3 & 0xffffffff;" (assignment_expression "local_b8 = param_3 & 0xffffffff" identifier = (binary_expression "param_3 & 0xffffffff" identifier & number_literal)) ;) (ERROR "uVar9 = locale::" (assignment_expression "uVar9 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&numpunct<char>::id);" statement_identifier (ERROR "::_M_id((id *)&numpunct<char>:" : : identifier ( (binary_expression "(id *)&numpunct<char" (cast_expression "(id *)&numpunct" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&numpunct" & identifier)) < identifier) > :) : (expression_statement "id);" identifier (ERROR ")" )) ;)) (expression_statement "plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar9 * 8);" (assignment_expression "plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar9 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar9 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar9 * 8)" ( (binary_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar9 * 8" (pointer_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18)" * (cast_expression "(long *)(*(long *)(param_6 + 0xd0) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_6 + 0xd0) + 0x18)" ( (binary_expression "*(long *)(param_6 + 0xd0) + 0x18" (pointer_expression "*(long *)(param_6 + 0xd0)" * (cast_expression "(long *)(param_6 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "uVar9 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar20 = *plVar2;" (assignment_expression "lVar20 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (if_statement "if (lVar20 == 0) {\n                    /* try { // try from 00348f25 to 00348f29 has its CatchHandler @ 003492e7 */\n    this = (__numpunct_cache<char> *)operator_new(0x90);\n    *(undefined4 *)(this + 8) = 0;\n    this[0x20] = (__numpunct_cache<char>)0x0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined ***)this = &PTR____numpunct_cache_00439298;\n    *(undefined8 *)(this + 0x18) = 0;\n    *(undefined8 *)(this + 0x28) = 0;\n    *(undefined8 *)(this + 0x30) = 0;\n    *(undefined8 *)(this + 0x38) = 0;\n    *(undefined8 *)(this + 0x40) = 0;\n    *(undefined2 *)(this + 0x48) = 0;\n    this[0x88] = (__numpunct_cache<char>)0x0;\n                    /* try { // try from 00348f92 to 00348f96 has its CatchHandler @ 003492e5 */\n    __numpunct_cache<char>::_M_cache(this,(locale *)(param_6 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar9);\n    lVar20 = *plVar2;\n  }" if (parenthesized_expression "(lVar20 == 0)" ( (binary_expression "lVar20 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 00348f25 to 00348f29 has its CatchHandler @ 003492e7 */\n    this = (__numpunct_cache<char> *)operator_new(0x90);\n    *(undefined4 *)(this + 8) = 0;\n    this[0x20] = (__numpunct_cache<char>)0x0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined ***)this = &PTR____numpunct_cache_00439298;\n    *(undefined8 *)(this + 0x18) = 0;\n    *(undefined8 *)(this + 0x28) = 0;\n    *(undefined8 *)(this + 0x30) = 0;\n    *(undefined8 *)(this + 0x38) = 0;\n    *(undefined8 *)(this + 0x40) = 0;\n    *(undefined2 *)(this + 0x48) = 0;\n    this[0x88] = (__numpunct_cache<char>)0x0;\n                    /* try { // try from 00348f92 to 00348f96 has its CatchHandler @ 003492e5 */\n    __numpunct_cache<char>::_M_cache(this,(locale *)(param_6 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar9);\n    lVar20 = *plVar2;\n  }" { comment (expression_statement "this = (__numpunct_cache<char> *)operator_new(0x90);" (assignment_expression "this = (__numpunct_cache<char> *)operator_new(0x90)" identifier = (parenthesized_expression "(__numpunct_cache<char> *)operator_new(0x90)" ( (binary_expression "__numpunct_cache<char> *)operator_new(0x90)" (binary_expression "__numpunct_cache<char" identifier < identifier) > (pointer_expression "*)operator_new(0x90)" * (ERROR ")" )) (call_expression "operator_new(0x90)" identifier (argument_list "(0x90)" ( number_literal ))))) ))) ;) (expression_statement "*(undefined4 *)(this + 8) = 0;" (assignment_expression "*(undefined4 *)(this + 8) = 0" (pointer_expression "*(undefined4 *)(this + 8)" * (cast_expression "(undefined4 *)(this + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x20] = (__numpunct_cache<char>)0x0;" (assignment_expression "this[0x20] = (__numpunct_cache<char>)0x0" (subscript_expression "this[0x20]" identifier [ number_literal ]) = (parenthesized_expression "(__numpunct_cache<char>)0x0" ( (binary_expression "__numpunct_cache<char>)0x0" (binary_expression "__numpunct_cache<char" identifier < identifier) > (ERROR ")" )) number_literal) ))) ;) (expression_statement "*(undefined8 *)(this + 0x10) = 0;" (assignment_expression "*(undefined8 *)(this + 0x10) = 0" (pointer_expression "*(undefined8 *)(this + 0x10)" * (cast_expression "(undefined8 *)(this + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)this = &PTR____numpunct_cache_00439298;" (assignment_expression "*(undefined ***)this = &PTR____numpunct_cache_00439298" (pointer_expression "*(undefined ***)this" * (cast_expression "(undefined ***)this" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____numpunct_cache_00439298" & identifier)) ;) (expression_statement "*(undefined8 *)(this + 0x18) = 0;" (assignment_expression "*(undefined8 *)(this + 0x18) = 0" (pointer_expression "*(undefined8 *)(this + 0x18)" * (cast_expression "(undefined8 *)(this + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x28) = 0;" (assignment_expression "*(undefined8 *)(this + 0x28) = 0" (pointer_expression "*(undefined8 *)(this + 0x28)" * (cast_expression "(undefined8 *)(this + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x28)" ( (binary_expression "this + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x30) = 0;" (assignment_expression "*(undefined8 *)(this + 0x30) = 0" (pointer_expression "*(undefined8 *)(this + 0x30)" * (cast_expression "(undefined8 *)(this + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x30)" ( (binary_expression "this + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x38) = 0;" (assignment_expression "*(undefined8 *)(this + 0x38) = 0" (pointer_expression "*(undefined8 *)(this + 0x38)" * (cast_expression "(undefined8 *)(this + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x38)" ( (binary_expression "this + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x40) = 0;" (assignment_expression "*(undefined8 *)(this + 0x40) = 0" (pointer_expression "*(undefined8 *)(this + 0x40)" * (cast_expression "(undefined8 *)(this + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x40)" ( (binary_expression "this + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(this + 0x48) = 0;" (assignment_expression "*(undefined2 *)(this + 0x48) = 0" (pointer_expression "*(undefined2 *)(this + 0x48)" * (cast_expression "(undefined2 *)(this + 0x48)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x48)" ( (binary_expression "this + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x88] = (__numpunct_cache<char>)0x0;" (assignment_expression "this[0x88] = (__numpunct_cache<char>)0x0" (subscript_expression "this[0x88]" identifier [ number_literal ]) = (parenthesized_expression "(__numpunct_cache<char>)0x0" ( (binary_expression "__numpunct_cache<char>)0x0" (binary_expression "__numpunct_cache<char" identifier < identifier) > (ERROR ")" )) number_literal) ))) ;) comment (expression_statement "__numpunct_cache<char>::_M_cache(this,(locale *)(param_6 + 0xd0));" (binary_expression "__numpunct_cache<char>::_M_cache(this,(locale *)(param_6 + 0xd0))" (binary_expression "__numpunct_cache<char" identifier < identifier) > (ERROR "::" : :) (call_expression "_M_cache(this,(locale *)(param_6 + 0xd0))" identifier (argument_list "(this,(locale *)(param_6 + 0xd0))" ( identifier , (cast_expression "(locale *)(param_6 + 0xd0)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) )))) ;) (labeled_statement "locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar9);" statement_identifier : (ERROR ":" :) (labeled_statement "_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar9);" statement_identifier : (ERROR ":" :) (expression_statement "_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar9);" (call_expression "_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar9)" identifier (argument_list "(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar9)" ( (pointer_expression "*(_Impl **)(param_6 + 0xd0)" * (cast_expression "(_Impl **)(param_6 + 0xd0)" ( (type_descriptor "_Impl **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) )))) , (cast_expression "(facet *)this" ( (type_descriptor "facet *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;))) (expression_statement "lVar20 = *plVar2;" (assignment_expression "lVar20 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) })) (expression_statement "uVar13 = *(uint *)(param_6 + 0x18);" (assignment_expression "uVar13 = *(uint *)(param_6 + 0x18)" identifier = (pointer_expression "*(uint *)(param_6 + 0x18)" * (cast_expression "(uint *)(param_6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0x18)" ( (binary_expression "param_6 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = uVar13 & 0x4a;" (assignment_expression "uVar12 = uVar13 & 0x4a" identifier = (binary_expression "uVar13 & 0x4a" identifier & number_literal)) ;) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (if_statement "if (uVar12 != 0x40) {\n    iVar6 = 0x10;\n    if (uVar12 != 8) {\n      iVar6 = 10;\n    }\n  }" if (parenthesized_expression "(uVar12 != 0x40)" ( (binary_expression "uVar12 != 0x40" identifier != number_literal) )) (compound_statement "{\n    iVar6 = 0x10;\n    if (uVar12 != 8) {\n      iVar6 = 10;\n    }\n  }" { (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" identifier = number_literal) ;) (if_statement "if (uVar12 != 8) {\n      iVar6 = 10;\n    }" if (parenthesized_expression "(uVar12 != 8)" ( (binary_expression "uVar12 != 8" identifier != number_literal) )) (compound_statement "{\n      iVar6 = 10;\n    }" { (expression_statement "iVar6 = 10;" (assignment_expression "iVar6 = 10" identifier = number_literal) ;) })) })) (expression_statement "bVar22 = (uint)param_3 == 0xffffffff;" (assignment_expression "bVar22 = (uint)param_3 == 0xffffffff" identifier = (binary_expression "(uint)param_3 == 0xffffffff" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) == number_literal)) ;) (expression_statement "bVar21 = param_2 != (long *)0x0 && bVar22;" (assignment_expression "bVar21 = param_2 != (long *)0x0 && bVar22" identifier = (binary_expression "param_2 != (long *)0x0 && bVar22" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar17 = bVar22;" (assignment_expression "bVar17 = bVar22" identifier = identifier) ;) (if_statement "if (bVar21) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar17 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar17 = iVar8 == -1 && bVar21;\n    }\n  }" if (parenthesized_expression "(bVar21)" ( identifier )) (compound_statement "{\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar17 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar17 = iVar8 == -1 && bVar21;\n    }\n  }" { (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar17 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar17 = iVar8 == -1 && bVar21;\n    }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      bVar17 = false;\n    }" { (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) }) (else_clause "else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar17 = iVar8 == -1 && bVar21;\n    }" else (compound_statement "{\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar17 = iVar8 == -1 && bVar21;\n    }" { (expression_statement "iVar8 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar8 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar8 != -1) {\n        plVar2 = param_2;\n      }" if (parenthesized_expression "(iVar8 != -1)" ( (binary_expression "iVar8 != -1" identifier != number_literal) )) (compound_statement "{\n        plVar2 = param_2;\n      }" { (expression_statement "plVar2 = param_2;" (assignment_expression "plVar2 = param_2" identifier = identifier) ;) })) (expression_statement "param_2 = plVar2;" (assignment_expression "param_2 = plVar2" identifier = identifier) ;) (expression_statement "bVar17 = iVar8 == -1 && bVar21;" (assignment_expression "bVar17 = iVar8 == -1 && bVar21" identifier = (binary_expression "iVar8 == -1 && bVar21" (binary_expression "iVar8 == -1" identifier == number_literal) && identifier)) ;) }))) })) (expression_statement "uVar13 = uVar13 & 0x4a;" (assignment_expression "uVar13 = uVar13 & 0x4a" identifier = (binary_expression "uVar13 & 0x4a" identifier & number_literal)) ;) (expression_statement "bVar23 = param_5 == -1;" (assignment_expression "bVar23 = param_5 == -1" identifier = (binary_expression "param_5 == -1" identifier == number_literal)) ;) (expression_statement "bVar4 = param_4 != (long *)0x0 && bVar23;" (assignment_expression "bVar4 = param_4 != (long *)0x0 && bVar23" identifier = (binary_expression "param_4 != (long *)0x0 && bVar23" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "local_c0 = param_4;" (assignment_expression "local_c0 = param_4" identifier = identifier) ;) (expression_statement "bVar21 = bVar23;" (assignment_expression "bVar21 = bVar23" identifier = identifier) ;) (if_statement "if (bVar4) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar21 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar21 = iVar8 == -1 && bVar4;\n    }\n  }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar21 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar21 = iVar8 == -1 && bVar4;\n    }\n  }" { (if_statement "if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar21 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar21 = iVar8 == -1 && bVar4;\n    }" if (parenthesized_expression "((ulong)param_4[2] < (ulong)param_4[3])" ( (binary_expression "(ulong)param_4[2] < (ulong)param_4[3]" (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      bVar21 = false;\n    }" { (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) }) (else_clause "else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar21 = iVar8 == -1 && bVar4;\n    }" else (compound_statement "{\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar21 = iVar8 == -1 && bVar4;\n    }" { (expression_statement "iVar8 = (**(code **)(*param_4 + 0x48))(param_4);" (assignment_expression "iVar8 = (**(code **)(*param_4 + 0x48))(param_4)" identifier = (call_expression "(**(code **)(*param_4 + 0x48))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" ( (pointer_expression "**(code **)(*param_4 + 0x48)" * (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "local_c0 = (long *)0x0;" (assignment_expression "local_c0 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar8 != -1) {\n        local_c0 = param_4;\n      }" if (parenthesized_expression "(iVar8 != -1)" ( (binary_expression "iVar8 != -1" identifier != number_literal) )) (compound_statement "{\n        local_c0 = param_4;\n      }" { (expression_statement "local_c0 = param_4;" (assignment_expression "local_c0 = param_4" identifier = identifier) ;) })) (expression_statement "bVar21 = iVar8 == -1 && bVar4;" (assignment_expression "bVar21 = iVar8 == -1 && bVar4" identifier = (binary_expression "iVar8 == -1 && bVar4" (binary_expression "iVar8 == -1" identifier == number_literal) && identifier)) ;) }))) })) (if_statement "if (bVar21 == bVar17) {\n    cVar5 = *(char *)(lVar20 + 0x20);\n    bVar21 = false;\n    uVar12 = 0;\n    bVar17 = false;\n    local_6b = true;\n    iVar8 = 0;\n  }\n  else {\n    if ((param_2 == (long *)0x0) || (!bVar22)) {\n      uVar12 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar12 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar12 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar12 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar20 + 0x20);\n    cVar14 = (char)uVar12;\n    bVar21 = *(char *)(lVar20 + 0x6e) == cVar14;\n    if ((bVar21) || (*(char *)(lVar20 + 0x6f) == cVar14)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar20 + 0x49) != cVar14)) &&\n         (*(char *)(lVar20 + 0x48) != cVar14)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar17 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar17 = iVar8 == -1;\n          if (bVar17) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar22 == bVar17) {\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          bVar17 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar12 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar12 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar20 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar21 = false;\n    }\n    bVar17 = false;\n    iVar8 = 0;\n    do {\n      uVar18 = (uint)local_b8;\n      cVar14 = (char)uVar12;\n      if (((cVar5 != '\0') && (*(char *)(lVar20 + 0x49) == cVar14)) ||\n         (*(char *)(lVar20 + 0x48) == cVar14)) break;\n      bVar22 = bVar23;\n      if (*(char *)(lVar20 + 0x72) == cVar14) {\n        bVar4 = (bool)(iVar6 == 10 | bVar17 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar17 = iVar6 == 8 || uVar13 == 0;\n        if (iVar6 != 8 && uVar13 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar17 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar9 = param_2[2];\n        if ((ulong)param_2[3] <= uVar9) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar9 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348940;\nLAB_00348646:\n        if (bVar22 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar17) break;\nLAB_003485d9:\n        if ((*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14)) {\n          bVar17 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar13 == 0;\n        if (iVar6 != 0x10 && uVar13 != 0) {\n          bVar17 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar17 = false;\nLAB_0034860e:\n        uVar9 = param_2[2];\n        if (uVar9 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar23) goto LAB_00348646;\nLAB_00348940:\n        bVar22 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar22 = iVar7 == -1 && (bVar22 && bVar23);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar12 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar20 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar18 = 0xffffffff;\n    } while (bVar17);\n    local_b8 = (ulong)uVar18;\n    local_6b = false;\n  }" if (parenthesized_expression "(bVar21 == bVar17)" ( (binary_expression "bVar21 == bVar17" identifier == identifier) )) (compound_statement "{\n    cVar5 = *(char *)(lVar20 + 0x20);\n    bVar21 = false;\n    uVar12 = 0;\n    bVar17 = false;\n    local_6b = true;\n    iVar8 = 0;\n  }" { (expression_statement "cVar5 = *(char *)(lVar20 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar20 + 0x20)" identifier = (pointer_expression "*(char *)(lVar20 + 0x20)" * (cast_expression "(char *)(lVar20 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x20)" ( (binary_expression "lVar20 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) (expression_statement "local_6b = true;" (assignment_expression "local_6b = true" identifier = true) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if ((param_2 == (long *)0x0) || (!bVar22)) {\n      uVar12 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar12 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar12 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar12 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar20 + 0x20);\n    cVar14 = (char)uVar12;\n    bVar21 = *(char *)(lVar20 + 0x6e) == cVar14;\n    if ((bVar21) || (*(char *)(lVar20 + 0x6f) == cVar14)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar20 + 0x49) != cVar14)) &&\n         (*(char *)(lVar20 + 0x48) != cVar14)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar17 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar17 = iVar8 == -1;\n          if (bVar17) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar22 == bVar17) {\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          bVar17 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar12 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar12 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar20 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar21 = false;\n    }\n    bVar17 = false;\n    iVar8 = 0;\n    do {\n      uVar18 = (uint)local_b8;\n      cVar14 = (char)uVar12;\n      if (((cVar5 != '\0') && (*(char *)(lVar20 + 0x49) == cVar14)) ||\n         (*(char *)(lVar20 + 0x48) == cVar14)) break;\n      bVar22 = bVar23;\n      if (*(char *)(lVar20 + 0x72) == cVar14) {\n        bVar4 = (bool)(iVar6 == 10 | bVar17 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar17 = iVar6 == 8 || uVar13 == 0;\n        if (iVar6 != 8 && uVar13 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar17 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar9 = param_2[2];\n        if ((ulong)param_2[3] <= uVar9) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar9 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348940;\nLAB_00348646:\n        if (bVar22 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar17) break;\nLAB_003485d9:\n        if ((*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14)) {\n          bVar17 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar13 == 0;\n        if (iVar6 != 0x10 && uVar13 != 0) {\n          bVar17 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar17 = false;\nLAB_0034860e:\n        uVar9 = param_2[2];\n        if (uVar9 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar23) goto LAB_00348646;\nLAB_00348940:\n        bVar22 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar22 = iVar7 == -1 && (bVar22 && bVar23);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar12 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar20 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar18 = 0xffffffff;\n    } while (bVar17);\n    local_b8 = (ulong)uVar18;\n    local_6b = false;\n  }" else (compound_statement "{\n    if ((param_2 == (long *)0x0) || (!bVar22)) {\n      uVar12 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar12 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar12 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar12 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar20 + 0x20);\n    cVar14 = (char)uVar12;\n    bVar21 = *(char *)(lVar20 + 0x6e) == cVar14;\n    if ((bVar21) || (*(char *)(lVar20 + 0x6f) == cVar14)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar20 + 0x49) != cVar14)) &&\n         (*(char *)(lVar20 + 0x48) != cVar14)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar17 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar17 = iVar8 == -1;\n          if (bVar17) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar22 == bVar17) {\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          bVar17 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar12 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar12 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar20 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar21 = false;\n    }\n    bVar17 = false;\n    iVar8 = 0;\n    do {\n      uVar18 = (uint)local_b8;\n      cVar14 = (char)uVar12;\n      if (((cVar5 != '\0') && (*(char *)(lVar20 + 0x49) == cVar14)) ||\n         (*(char *)(lVar20 + 0x48) == cVar14)) break;\n      bVar22 = bVar23;\n      if (*(char *)(lVar20 + 0x72) == cVar14) {\n        bVar4 = (bool)(iVar6 == 10 | bVar17 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar17 = iVar6 == 8 || uVar13 == 0;\n        if (iVar6 != 8 && uVar13 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar17 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar9 = param_2[2];\n        if ((ulong)param_2[3] <= uVar9) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar9 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348940;\nLAB_00348646:\n        if (bVar22 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar17) break;\nLAB_003485d9:\n        if ((*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14)) {\n          bVar17 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar13 == 0;\n        if (iVar6 != 0x10 && uVar13 != 0) {\n          bVar17 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar17 = false;\nLAB_0034860e:\n        uVar9 = param_2[2];\n        if (uVar9 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar23) goto LAB_00348646;\nLAB_00348940:\n        bVar22 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar22 = iVar7 == -1 && (bVar22 && bVar23);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar12 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar20 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar18 = 0xffffffff;\n    } while (bVar17);\n    local_b8 = (ulong)uVar18;\n    local_6b = false;\n  }" { (if_statement "if ((param_2 == (long *)0x0) || (!bVar22)) {\n      uVar12 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar12 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar12 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar12 = 0xffffffff;\n      }\n    }" if (parenthesized_expression "((param_2 == (long *)0x0) || (!bVar22))" ( (binary_expression "(param_2 == (long *)0x0) || (!bVar22)" (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(!bVar22)" ( (unary_expression "!bVar22" ! identifier) ))) )) (compound_statement "{\n      uVar12 = (uint)param_3 & 0xff;\n    }" { (expression_statement "uVar12 = (uint)param_3 & 0xff;" (assignment_expression "uVar12 = (uint)param_3 & 0xff" identifier = (binary_expression "(uint)param_3 & 0xff" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) }) (else_clause "else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar12 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar12 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar12 = 0xffffffff;\n      }\n    }" else (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar12 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar12 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar12 = 0xffffffff;\n      }\n    }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      uVar12 = (uint)*(byte *)param_2[2];\n    }" { (expression_statement "uVar12 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar12 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar12 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar12 = 0xffffffff;\n      }\n    }" else (compound_statement "{\n      uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar12 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar12 = 0xffffffff;\n      }\n    }" { (expression_statement "uVar12 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar12 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar12 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar12 = 0xffffffff;\n      }" if (parenthesized_expression "(uVar12 == 0xffffffff)" ( (binary_expression "uVar12 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n        param_2 = (long *)0x0;\n        uVar12 = 0xffffffff;\n      }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) })) }))))) (expression_statement "cVar5 = *(char *)(lVar20 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar20 + 0x20)" identifier = (pointer_expression "*(char *)(lVar20 + 0x20)" * (cast_expression "(char *)(lVar20 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x20)" ( (binary_expression "lVar20 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "cVar14 = (char)uVar12;" (assignment_expression "cVar14 = (char)uVar12" identifier = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "bVar21 = *(char *)(lVar20 + 0x6e) == cVar14;" (assignment_expression "bVar21 = *(char *)(lVar20 + 0x6e) == cVar14" identifier = (binary_expression "*(char *)(lVar20 + 0x6e) == cVar14" (pointer_expression "*(char *)(lVar20 + 0x6e)" * (cast_expression "(char *)(lVar20 + 0x6e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x6e)" ( (binary_expression "lVar20 + 0x6e" identifier + number_literal) )))) == identifier)) ;) (if_statement "if ((bVar21) || (*(char *)(lVar20 + 0x6f) == cVar14)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar20 + 0x49) != cVar14)) &&\n         (*(char *)(lVar20 + 0x48) != cVar14)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar17 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar17 = iVar8 == -1;\n          if (bVar17) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar22 == bVar17) {\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          bVar17 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar12 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar12 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar20 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar21 = false;\n    }" if (parenthesized_expression "((bVar21) || (*(char *)(lVar20 + 0x6f) == cVar14))" ( (binary_expression "(bVar21) || (*(char *)(lVar20 + 0x6f) == cVar14)" (parenthesized_expression "(bVar21)" ( identifier )) || (parenthesized_expression "(*(char *)(lVar20 + 0x6f) == cVar14)" ( (binary_expression "*(char *)(lVar20 + 0x6f) == cVar14" (pointer_expression "*(char *)(lVar20 + 0x6f)" * (cast_expression "(char *)(lVar20 + 0x6f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x6f)" ( (binary_expression "lVar20 + 0x6f" identifier + number_literal) )))) == identifier) ))) )) (compound_statement "{\n      if (((cVar5 == '\0') || (*(char *)(lVar20 + 0x49) != cVar14)) &&\n         (*(char *)(lVar20 + 0x48) != cVar14)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar17 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar17 = iVar8 == -1;\n          if (bVar17) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar22 == bVar17) {\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          bVar17 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar12 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar12 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar20 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }" { (if_statement "if (((cVar5 == '\0') || (*(char *)(lVar20 + 0x49) != cVar14)) &&\n         (*(char *)(lVar20 + 0x48) != cVar14)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar17 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar17 = iVar8 == -1;\n          if (bVar17) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar22 == bVar17) {\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          bVar17 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar12 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar12 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar20 + 0x20);\n        local_b8 = 0xffffffff;\n      }" if (parenthesized_expression "(((cVar5 == '\0') || (*(char *)(lVar20 + 0x49) != cVar14)) &&\n         (*(char *)(lVar20 + 0x48) != cVar14))" ( (binary_expression "((cVar5 == '\0') || (*(char *)(lVar20 + 0x49) != cVar14)) &&\n         (*(char *)(lVar20 + 0x48) != cVar14)" (parenthesized_expression "((cVar5 == '\0') || (*(char *)(lVar20 + 0x49) != cVar14))" ( (binary_expression "(cVar5 == '\0') || (*(char *)(lVar20 + 0x49) != cVar14)" (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(char *)(lVar20 + 0x49) != cVar14)" ( (binary_expression "*(char *)(lVar20 + 0x49) != cVar14" (pointer_expression "*(char *)(lVar20 + 0x49)" * (cast_expression "(char *)(lVar20 + 0x49)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x49)" ( (binary_expression "lVar20 + 0x49" identifier + number_literal) )))) != identifier) ))) )) && (parenthesized_expression "(*(char *)(lVar20 + 0x48) != cVar14)" ( (binary_expression "*(char *)(lVar20 + 0x48) != cVar14" (pointer_expression "*(char *)(lVar20 + 0x48)" * (cast_expression "(char *)(lVar20 + 0x48)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x48)" ( (binary_expression "lVar20 + 0x48" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar17 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar17 = iVar8 == -1;\n          if (bVar17) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar22 == bVar17) {\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          bVar17 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar12 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar12 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar20 + 0x20);\n        local_b8 = 0xffffffff;\n      }" { (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          param_2[2] = param_2[2] + 1;\n        }" { (expression_statement "param_2[2] = param_2[2] + 1;" (assignment_expression "param_2[2] = param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" else (compound_statement "{\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" { (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;) }))) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar17 = iVar8 == -1;\n          if (bVar17) {\n            param_2 = (long *)0x0;\n          }\n        }" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar17 = iVar8 == -1;\n          if (bVar17) {\n            param_2 = (long *)0x0;\n          }\n        }" { (expression_statement "iVar8 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar8 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "bVar17 = iVar8 == -1;" (assignment_expression "bVar17 = iVar8 == -1" identifier = (binary_expression "iVar8 == -1" identifier == number_literal)) ;) (if_statement "if (bVar17) {\n            param_2 = (long *)0x0;\n          }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n            param_2 = (long *)0x0;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) })) (expression_statement "bVar4 = local_c0 != (long *)0x0 && bVar23;" (assignment_expression "bVar4 = local_c0 != (long *)0x0 && bVar23" identifier = (binary_expression "local_c0 != (long *)0x0 && bVar23" (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar22 = bVar23;" (assignment_expression "bVar22 = bVar23" identifier = identifier) ;) (if_statement "if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar8 == -1 && bVar4;\n          }\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar8 == -1 && bVar4;\n          }\n        }" { (if_statement "if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar8 == -1 && bVar4;\n          }" if (parenthesized_expression "((ulong)local_c0[2] < (ulong)local_c0[3])" ( (binary_expression "(ulong)local_c0[2] < (ulong)local_c0[3]" (cast_expression "(ulong)local_c0[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_c0[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[3]" identifier [ number_literal ]))) )) (compound_statement "{\n            bVar22 = false;\n          }" { (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) }) (else_clause "else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar8 == -1 && bVar4;\n          }" else (compound_statement "{\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar8 == -1 && bVar4;\n          }" { (expression_statement "iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0)" identifier = (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" ( (pointer_expression "**(code **)(*local_c0 + 0x48)" * (pointer_expression "*(code **)(*local_c0 + 0x48)" * (cast_expression "(code **)(*local_c0 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_c0 + 0x48)" ( (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" * identifier) + number_literal) ))))) )) (argument_list "(local_c0)" ( identifier )))) ;) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }" if (parenthesized_expression "(iVar8 != -1)" ( (binary_expression "iVar8 != -1" identifier != number_literal) )) (compound_statement "{\n              plVar2 = local_c0;\n            }" { (expression_statement "plVar2 = local_c0;" (assignment_expression "plVar2 = local_c0" identifier = identifier) ;) })) (expression_statement "local_c0 = plVar2;" (assignment_expression "local_c0 = plVar2" identifier = identifier) ;) (expression_statement "bVar22 = iVar8 == -1 && bVar4;" (assignment_expression "bVar22 = iVar8 == -1 && bVar4" identifier = (binary_expression "iVar8 == -1 && bVar4" (binary_expression "iVar8 == -1" identifier == number_literal) && identifier)) ;) }))) })) (if_statement "if (bVar22 == bVar17) {\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          bVar17 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }" if (parenthesized_expression "(bVar22 == bVar17)" ( (binary_expression "bVar22 == bVar17" identifier == identifier) )) (compound_statement "{\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          bVar17 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }" { (expression_statement "cVar5 = *(char *)(lVar20 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar20 + 0x20)" identifier = (pointer_expression "*(char *)(lVar20 + 0x20)" * (cast_expression "(char *)(lVar20 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x20)" ( (binary_expression "lVar20 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_6b = true;" (assignment_expression "local_6b = true" identifier = true) ;) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00348669;" goto statement_identifier ;) })) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar12 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }\n          }\n        }" if (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar12 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }\n          }\n        }" { (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar12 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }\n          }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n            uVar12 = (uint)*(byte *)param_2[2];\n          }" { (expression_statement "uVar12 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar12 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }\n          }" else (compound_statement "{\n            uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }\n          }" { (expression_statement "uVar12 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar12 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar12 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }" if (parenthesized_expression "(uVar12 == 0xffffffff)" ( (binary_expression "uVar12 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n              param_2 = (long *)0x0;\n              uVar12 = 0xffffffff;\n            }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) })) }))) })) (expression_statement "cVar5 = *(char *)(lVar20 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar20 + 0x20)" identifier = (pointer_expression "*(char *)(lVar20 + 0x20)" * (cast_expression "(char *)(lVar20 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x20)" ( (binary_expression "lVar20 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) })) }) (else_clause "else {\n      bVar21 = false;\n    }" else (compound_statement "{\n      bVar21 = false;\n    }" { (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) }))) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar18 = (uint)local_b8;\n      cVar14 = (char)uVar12;\n      if (((cVar5 != '\0') && (*(char *)(lVar20 + 0x49) == cVar14)) ||\n         (*(char *)(lVar20 + 0x48) == cVar14)) break;\n      bVar22 = bVar23;\n      if (*(char *)(lVar20 + 0x72) == cVar14) {\n        bVar4 = (bool)(iVar6 == 10 | bVar17 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar17 = iVar6 == 8 || uVar13 == 0;\n        if (iVar6 != 8 && uVar13 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar17 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar9 = param_2[2];\n        if ((ulong)param_2[3] <= uVar9) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar9 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348940;\nLAB_00348646:\n        if (bVar22 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar17) break;\nLAB_003485d9:\n        if ((*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14)) {\n          bVar17 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar13 == 0;\n        if (iVar6 != 0x10 && uVar13 != 0) {\n          bVar17 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar17 = false;\nLAB_0034860e:\n        uVar9 = param_2[2];\n        if (uVar9 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar23) goto LAB_00348646;\nLAB_00348940:\n        bVar22 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar22 = iVar7 == -1 && (bVar22 && bVar23);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar12 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar20 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar18 = 0xffffffff;\n    } while (bVar17);" do (compound_statement "{\n      uVar18 = (uint)local_b8;\n      cVar14 = (char)uVar12;\n      if (((cVar5 != '\0') && (*(char *)(lVar20 + 0x49) == cVar14)) ||\n         (*(char *)(lVar20 + 0x48) == cVar14)) break;\n      bVar22 = bVar23;\n      if (*(char *)(lVar20 + 0x72) == cVar14) {\n        bVar4 = (bool)(iVar6 == 10 | bVar17 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar17 = iVar6 == 8 || uVar13 == 0;\n        if (iVar6 != 8 && uVar13 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar17 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar9 = param_2[2];\n        if ((ulong)param_2[3] <= uVar9) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar9 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348940;\nLAB_00348646:\n        if (bVar22 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar17) break;\nLAB_003485d9:\n        if ((*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14)) {\n          bVar17 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar13 == 0;\n        if (iVar6 != 0x10 && uVar13 != 0) {\n          bVar17 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar17 = false;\nLAB_0034860e:\n        uVar9 = param_2[2];\n        if (uVar9 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar23) goto LAB_00348646;\nLAB_00348940:\n        bVar22 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar22 = iVar7 == -1 && (bVar22 && bVar23);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar12 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar20 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar18 = 0xffffffff;\n    }" { (expression_statement "uVar18 = (uint)local_b8;" (assignment_expression "uVar18 = (uint)local_b8" identifier = (cast_expression "(uint)local_b8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "cVar14 = (char)uVar12;" (assignment_expression "cVar14 = (char)uVar12" identifier = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (((cVar5 != '\0') && (*(char *)(lVar20 + 0x49) == cVar14)) ||\n         (*(char *)(lVar20 + 0x48) == cVar14)) break;" if (parenthesized_expression "(((cVar5 != '\0') && (*(char *)(lVar20 + 0x49) == cVar14)) ||\n         (*(char *)(lVar20 + 0x48) == cVar14))" ( (binary_expression "((cVar5 != '\0') && (*(char *)(lVar20 + 0x49) == cVar14)) ||\n         (*(char *)(lVar20 + 0x48) == cVar14)" (parenthesized_expression "((cVar5 != '\0') && (*(char *)(lVar20 + 0x49) == cVar14))" ( (binary_expression "(cVar5 != '\0') && (*(char *)(lVar20 + 0x49) == cVar14)" (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(lVar20 + 0x49) == cVar14)" ( (binary_expression "*(char *)(lVar20 + 0x49) == cVar14" (pointer_expression "*(char *)(lVar20 + 0x49)" * (cast_expression "(char *)(lVar20 + 0x49)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x49)" ( (binary_expression "lVar20 + 0x49" identifier + number_literal) )))) == identifier) ))) )) || (parenthesized_expression "(*(char *)(lVar20 + 0x48) == cVar14)" ( (binary_expression "*(char *)(lVar20 + 0x48) == cVar14" (pointer_expression "*(char *)(lVar20 + 0x48)" * (cast_expression "(char *)(lVar20 + 0x48)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x48)" ( (binary_expression "lVar20 + 0x48" identifier + number_literal) )))) == identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "bVar22 = bVar23;" (assignment_expression "bVar22 = bVar23" identifier = identifier) ;) (if_statement "if (*(char *)(lVar20 + 0x72) == cVar14) {\n        bVar4 = (bool)(iVar6 == 10 | bVar17 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar17 = iVar6 == 8 || uVar13 == 0;\n        if (iVar6 != 8 && uVar13 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar17 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar9 = param_2[2];\n        if ((ulong)param_2[3] <= uVar9) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar9 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348940;\nLAB_00348646:\n        if (bVar22 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar17) break;\nLAB_003485d9:\n        if ((*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14)) {\n          bVar17 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar13 == 0;\n        if (iVar6 != 0x10 && uVar13 != 0) {\n          bVar17 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar17 = false;\nLAB_0034860e:\n        uVar9 = param_2[2];\n        if (uVar9 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar23) goto LAB_00348646;\nLAB_00348940:\n        bVar22 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar22 = iVar7 == -1 && (bVar22 && bVar23);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }" if (parenthesized_expression "(*(char *)(lVar20 + 0x72) == cVar14)" ( (binary_expression "*(char *)(lVar20 + 0x72) == cVar14" (pointer_expression "*(char *)(lVar20 + 0x72)" * (cast_expression "(char *)(lVar20 + 0x72)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x72)" ( (binary_expression "lVar20 + 0x72" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n        bVar4 = (bool)(iVar6 == 10 | bVar17 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar17 = iVar6 == 8 || uVar13 == 0;\n        if (iVar6 != 8 && uVar13 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar17 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar9 = param_2[2];\n        if ((ulong)param_2[3] <= uVar9) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar9 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348940;\nLAB_00348646:\n        if (bVar22 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }" { (expression_statement "bVar4 = (bool)(iVar6 == 10 | bVar17 ^ 1U);" (assignment_expression "bVar4 = (bool)(iVar6 == 10 | bVar17 ^ 1U)" identifier = (cast_expression "(bool)(iVar6 == 10 | bVar17 ^ 1U)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(iVar6 == 10 | bVar17 ^ 1U)" ( (binary_expression "iVar6 == 10 | bVar17 ^ 1U" (binary_expression "iVar6 == 10" identifier == number_literal) | (binary_expression "bVar17 ^ 1U" identifier ^ number_literal)) )))) ;) (if_statement "if (!bVar4) goto LAB_003485d9;" if (parenthesized_expression "(!bVar4)" ( (unary_expression "!bVar4" ! identifier) )) (goto_statement "goto LAB_003485d9;" goto statement_identifier ;)) (expression_statement "bVar17 = iVar6 == 8 || uVar13 == 0;" (assignment_expression "bVar17 = iVar6 == 8 || uVar13 == 0" identifier = (binary_expression "iVar6 == 8 || uVar13 == 0" (binary_expression "iVar6 == 8" identifier == number_literal) || (binary_expression "uVar13 == 0" identifier == number_literal))) ;) (if_statement "if (iVar6 != 8 && uVar13 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar17 = bVar4;\n          goto LAB_0034860e;\n        }" if (parenthesized_expression "(iVar6 != 8 && uVar13 != 0)" ( (binary_expression "iVar6 != 8 && uVar13 != 0" (binary_expression "iVar6 != 8" identifier != number_literal) && (binary_expression "uVar13 != 0" identifier != number_literal)) )) (compound_statement "{\n          iVar8 = iVar8 + 1;\n          bVar17 = bVar4;\n          goto LAB_0034860e;\n        }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "bVar17 = bVar4;" (assignment_expression "bVar17 = bVar4" identifier = identifier) ;) (goto_statement "goto LAB_0034860e;" goto statement_identifier ;) })) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (expression_statement "uVar9 = param_2[2];" (assignment_expression "uVar9 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (if_statement "if ((ulong)param_2[3] <= uVar9) goto LAB_003488c0;" if (parenthesized_expression "((ulong)param_2[3] <= uVar9)" ( (binary_expression "(ulong)param_2[3] <= uVar9" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_003488c0;" goto statement_identifier ;)) (labeled_statement "LAB_0034861c:\n        param_2[2] = uVar9 + 1;" statement_identifier : (expression_statement "param_2[2] = uVar9 + 1;" (assignment_expression "param_2[2] = uVar9 + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar9 + 1" identifier + number_literal)) ;)) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_003488f8;" goto statement_identifier ;)) (labeled_statement "LAB_00348635:\n        bVar4 = false;" statement_identifier : (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;)) (if_statement "if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348940;" if (parenthesized_expression "(local_c0 != (long *)0x0 && bVar23)" ( (binary_expression "local_c0 != (long *)0x0 && bVar23" (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) (goto_statement "goto LAB_00348940;" goto statement_identifier ;)) (labeled_statement "LAB_00348646:\n        if (bVar22 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }" statement_identifier : (if_statement "if (bVar22 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }" if (parenthesized_expression "(bVar22 == bVar4)" ( (binary_expression "bVar22 == bVar4" identifier == identifier) )) (compound_statement "{\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar20 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }" { (labeled_statement "LAB_0034864f:\n          local_b8 = 0xffffffff;" statement_identifier : (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "cVar5 = *(char *)(lVar20 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar20 + 0x20)" identifier = (pointer_expression "*(char *)(lVar20 + 0x20)" * (cast_expression "(char *)(lVar20 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x20)" ( (binary_expression "lVar20 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_6b = true;" (assignment_expression "local_6b = true" identifier = true) ;) (goto_statement "goto LAB_00348669;" goto statement_identifier ;) }))) }) (else_clause "else {\n        if (!bVar17) break;\nLAB_003485d9:\n        if ((*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14)) {\n          bVar17 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar13 == 0;\n        if (iVar6 != 0x10 && uVar13 != 0) {\n          bVar17 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar17 = false;\nLAB_0034860e:\n        uVar9 = param_2[2];\n        if (uVar9 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar23) goto LAB_00348646;\nLAB_00348940:\n        bVar22 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar22 = iVar7 == -1 && (bVar22 && bVar23);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }" else (compound_statement "{\n        if (!bVar17) break;\nLAB_003485d9:\n        if ((*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14)) {\n          bVar17 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar13 == 0;\n        if (iVar6 != 0x10 && uVar13 != 0) {\n          bVar17 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar17 = false;\nLAB_0034860e:\n        uVar9 = param_2[2];\n        if (uVar9 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar23) goto LAB_00348646;\nLAB_00348940:\n        bVar22 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar22 = iVar7 == -1 && (bVar22 && bVar23);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }" { (if_statement "if (!bVar17) break;" if (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_003485d9:\n        if ((*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14)) {\n          bVar17 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }" statement_identifier : (if_statement "if ((*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14)) {\n          bVar17 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }" if (parenthesized_expression "((*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14))" ( (binary_expression "(*(char *)(lVar20 + 0x70) != cVar14) && (*(char *)(lVar20 + 0x71) != cVar14)" (parenthesized_expression "(*(char *)(lVar20 + 0x70) != cVar14)" ( (binary_expression "*(char *)(lVar20 + 0x70) != cVar14" (pointer_expression "*(char *)(lVar20 + 0x70)" * (cast_expression "(char *)(lVar20 + 0x70)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x70)" ( (binary_expression "lVar20 + 0x70" identifier + number_literal) )))) != identifier) )) && (parenthesized_expression "(*(char *)(lVar20 + 0x71) != cVar14)" ( (binary_expression "*(char *)(lVar20 + 0x71) != cVar14" (pointer_expression "*(char *)(lVar20 + 0x71)" * (cast_expression "(char *)(lVar20 + 0x71)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x71)" ( (binary_expression "lVar20 + 0x71" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n          bVar17 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }" { (expression_statement "bVar17 = true;" (assignment_expression "bVar17 = true" identifier = true) ;) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" identifier = false) ;) (goto_statement "goto LAB_00348669;" goto statement_identifier ;) }))) (expression_statement "local_6b = iVar6 == 0x10 || uVar13 == 0;" (assignment_expression "local_6b = iVar6 == 0x10 || uVar13 == 0" identifier = (binary_expression "iVar6 == 0x10 || uVar13 == 0" (binary_expression "iVar6 == 0x10" identifier == number_literal) || (binary_expression "uVar13 == 0" identifier == number_literal))) ;) (if_statement "if (iVar6 != 0x10 && uVar13 != 0) {\n          bVar17 = true;\n          goto LAB_00348678;\n        }" if (parenthesized_expression "(iVar6 != 0x10 && uVar13 != 0)" ( (binary_expression "iVar6 != 0x10 && uVar13 != 0" (binary_expression "iVar6 != 0x10" identifier != number_literal) && (binary_expression "uVar13 != 0" identifier != number_literal)) )) (compound_statement "{\n          bVar17 = true;\n          goto LAB_00348678;\n        }" { (expression_statement "bVar17 = true;" (assignment_expression "bVar17 = true" identifier = true) ;) (goto_statement "goto LAB_00348678;" goto statement_identifier ;) })) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" identifier = number_literal) ;) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) (labeled_statement "LAB_0034860e:\n        uVar9 = param_2[2];" statement_identifier : (expression_statement "uVar9 = param_2[2];" (assignment_expression "uVar9 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;)) (if_statement "if (uVar9 < (ulong)param_2[3]) goto LAB_0034861c;" if (parenthesized_expression "(uVar9 < (ulong)param_2[3])" ( (binary_expression "uVar9 < (ulong)param_2[3]" identifier < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0034861c;" goto statement_identifier ;)) (labeled_statement "LAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);" statement_identifier : (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;)) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348635;" goto statement_identifier ;)) (labeled_statement "LAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);" statement_identifier : (expression_statement "iVar7 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar7 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;)) (expression_statement "bVar4 = iVar7 == -1;" (assignment_expression "bVar4 = iVar7 == -1" identifier = (binary_expression "iVar7 == -1" identifier == number_literal)) ;) (if_statement "if (bVar4) {\n          param_2 = (long *)0x0;\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          param_2 = (long *)0x0;\n        }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (local_c0 == (long *)0x0 || !bVar23) goto LAB_00348646;" if (parenthesized_expression "(local_c0 == (long *)0x0 || !bVar23)" ( (binary_expression "local_c0 == (long *)0x0 || !bVar23" (binary_expression "local_c0 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar23" ! identifier)) )) (goto_statement "goto LAB_00348646;" goto statement_identifier ;)) (labeled_statement "LAB_00348940:\n        bVar22 = local_c0 != (long *)0x0;" statement_identifier : (expression_statement "bVar22 = local_c0 != (long *)0x0;" (assignment_expression "bVar22 = local_c0 != (long *)0x0" identifier = (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ;)) (if_statement "if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar22 = iVar7 == -1 && (bVar22 && bVar23);\n          goto LAB_00348646;\n        }" if (parenthesized_expression "((ulong)local_c0[3] <= (ulong)local_c0[2])" ( (binary_expression "(ulong)local_c0[3] <= (ulong)local_c0[2]" (cast_expression "(ulong)local_c0[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_c0[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[2]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar22 = iVar7 == -1 && (bVar22 && bVar23);\n          goto LAB_00348646;\n        }" { (expression_statement "iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0)" identifier = (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" ( (pointer_expression "**(code **)(*local_c0 + 0x48)" * (pointer_expression "*(code **)(*local_c0 + 0x48)" * (cast_expression "(code **)(*local_c0 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_c0 + 0x48)" ( (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" * identifier) + number_literal) ))))) )) (argument_list "(local_c0)" ( identifier )))) ;) (if_statement "if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (compound_statement "{\n            local_c0 = (long *)0x0;\n          }" { (expression_statement "local_c0 = (long *)0x0;" (assignment_expression "local_c0 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "bVar22 = iVar7 == -1 && (bVar22 && bVar23);" (assignment_expression "bVar22 = iVar7 == -1 && (bVar22 && bVar23)" identifier = (binary_expression "iVar7 == -1 && (bVar22 && bVar23)" (binary_expression "iVar7 == -1" identifier == number_literal) && (parenthesized_expression "(bVar22 && bVar23)" ( (binary_expression "bVar22 && bVar23" identifier && identifier) )))) ;) (goto_statement "goto LAB_00348646;" goto statement_identifier ;) })) (if_statement "if (bVar4 == false) goto LAB_0034864f;" if (parenthesized_expression "(bVar4 == false)" ( (binary_expression "bVar4 == false" identifier == false) )) (goto_statement "goto LAB_0034864f;" goto statement_identifier ;)) }))) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n      }" if (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n      }" { (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          uVar12 = (uint)*(byte *)param_2[2];\n        }" { (expression_statement "uVar12 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar12 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }" else (compound_statement "{\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }" { (expression_statement "uVar12 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar12 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }" if (parenthesized_expression "(uVar12 == 0xffffffff)" ( (binary_expression "uVar12 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) })) }))) })) (expression_statement "cVar5 = *(char *)(lVar20 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar20 + 0x20)" identifier = (pointer_expression "*(char *)(lVar20 + 0x20)" * (cast_expression "(char *)(lVar20 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x20)" ( (binary_expression "lVar20 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "(bVar17)" ( identifier )) ;) (expression_statement "local_b8 = (ulong)uVar18;" (assignment_expression "local_b8 = (ulong)uVar18" identifier = (cast_expression "(ulong)uVar18" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" identifier = false) ;) }))) (labeled_statement "LAB_00348669:\n  local_a0 = 0x16;" statement_identifier : (expression_statement "local_a0 = 0x16;" (assignment_expression "local_a0 = 0x16" identifier = number_literal) ;)) (if_statement "if (iVar6 != 0x10) {\nLAB_00348678:\n    local_a0 = (ulong)iVar6;\n  }" if (parenthesized_expression "(iVar6 != 0x10)" ( (binary_expression "iVar6 != 0x10" identifier != number_literal) )) (compound_statement "{\nLAB_00348678:\n    local_a0 = (ulong)iVar6;\n  }" { (labeled_statement "LAB_00348678:\n    local_a0 = (ulong)iVar6;" statement_identifier : (expression_statement "local_a0 = (ulong)iVar6;" (assignment_expression "local_a0 = (ulong)iVar6" identifier = (cast_expression "(ulong)iVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;)) })) (expression_statement "bVar19 = local_6b;" (assignment_expression "bVar19 = local_6b" identifier = identifier) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (if_statement "if (cVar5 != '\0') {\n    std::string::reserve((string *)&local_58,0x20);\n  }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    std::string::reserve((string *)&local_58,0x20);\n  }" { (labeled_statement "std::string::reserve((string *)&local_58,0x20);" statement_identifier : (ERROR ":" :) (labeled_statement "string::reserve((string *)&local_58,0x20);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((string *)&local_58,0x20);" (call_expression "reserve((string *)&local_58,0x20)" identifier (argument_list "((string *)&local_58,0x20)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , number_literal ))) ;))) })) (expression_statement "uVar16 = (ulong)iVar6;" (assignment_expression "uVar16 = (ulong)iVar6" identifier = (cast_expression "(ulong)iVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "bVar3 = *(byte *)(lVar20 + 0x88);" (assignment_expression "bVar3 = *(byte *)(lVar20 + 0x88)" identifier = (pointer_expression "*(byte *)(lVar20 + 0x88)" * (cast_expression "(byte *)(lVar20 + 0x88)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x88)" ( (binary_expression "lVar20 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = 0x7fffffffffffffff;" (assignment_expression "uVar9 = 0x7fffffffffffffff" identifier = number_literal) ;) (if_statement "if (bVar21) {\n    uVar9 = 0x8000000000000000;\n  }" if (parenthesized_expression "(bVar21)" ( identifier )) (compound_statement "{\n    uVar9 = 0x8000000000000000;\n  }" { (expression_statement "uVar9 = 0x8000000000000000;" (assignment_expression "uVar9 = 0x8000000000000000" identifier = number_literal) ;) })) (expression_statement "uVar15 = local_50;" (assignment_expression "uVar15 = local_50" identifier = identifier) ;) (if_statement "if (bVar3 == 0) {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar12;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar22 = bVar23;\n        if (uVar9 / uVar16 < local_a8) {\n          local_6a = 1;\n          uVar15 = param_2[2];\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar22 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar15 = local_a8 * uVar16;\n          local_a8 = (long)iVar6 + uVar15;\n          local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n          uVar15 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar23) goto LAB_003487c0;\nLAB_00348b10:\n          bVar22 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar6 == -1 && (bVar22 && bVar23);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_6a = 0;\n    local_6b = false;\n    local_a8 = 0;\n  }\n  else {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar15 = local_50;\n        cVar5 = (char)uVar12;\n        if ((*(byte *)(lVar20 + 0x20) == 0) || (*(char *)(lVar20 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar20 + 0x48)) ||\n             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar10 - (int)(void *)(lVar20 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar9 / uVar16) {\n            uVar15 = local_a8 * uVar16;\n            local_a8 = (long)iVar6 + uVar15;\n            local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar15 = param_2[2];\n          local_6a = bVar3;\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar19 = 0;\n            local_6b = (bool)*(byte *)(lVar20 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar11 = 0xf;\n          }\n          else {\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar11 < uVar1) {\n            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar15] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar15 = param_2[2];\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar22 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar22) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar12;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar22 = bVar23;\n        if (uVar9 / uVar16 < local_a8) {\n          local_6a = 1;\n          uVar15 = param_2[2];\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar22 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar15 = local_a8 * uVar16;\n          local_a8 = (long)iVar6 + uVar15;\n          local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n          uVar15 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar23) goto LAB_003487c0;\nLAB_00348b10:\n          bVar22 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar6 == -1 && (bVar22 && bVar23);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_6a = 0;\n    local_6b = false;\n    local_a8 = 0;\n  }" { (if_statement "if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar12;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar22 = bVar23;\n        if (uVar9 / uVar16 < local_a8) {\n          local_6a = 1;\n          uVar15 = param_2[2];\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar22 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar15 = local_a8 * uVar16;\n          local_a8 = (long)iVar6 + uVar15;\n          local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n          uVar15 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar23) goto LAB_003487c0;\nLAB_00348b10:\n          bVar22 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar6 == -1 && (bVar22 && bVar23);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" if (parenthesized_expression "(local_6b == false)" ( (binary_expression "local_6b == false" identifier == false) )) (compound_statement "{\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar12;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar22 = bVar23;\n        if (uVar9 / uVar16 < local_a8) {\n          local_6a = 1;\n          uVar15 = param_2[2];\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar22 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar15 = local_a8 * uVar16;\n          local_a8 = (long)iVar6 + uVar15;\n          local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n          uVar15 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar23) goto LAB_003487c0;\nLAB_00348b10:\n          bVar22 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar6 == -1 && (bVar22 && bVar23);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" { (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (do_statement "do {\n        cVar5 = (char)uVar12;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar22 = bVar23;\n        if (uVar9 / uVar16 < local_a8) {\n          local_6a = 1;\n          uVar15 = param_2[2];\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar22 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar15 = local_a8 * uVar16;\n          local_a8 = (long)iVar6 + uVar15;\n          local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n          uVar15 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar23) goto LAB_003487c0;\nLAB_00348b10:\n          bVar22 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar6 == -1 && (bVar22 && bVar23);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );" do (compound_statement "{\n        cVar5 = (char)uVar12;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar22 = bVar23;\n        if (uVar9 / uVar16 < local_a8) {\n          local_6a = 1;\n          uVar15 = param_2[2];\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar22 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar15 = local_a8 * uVar16;\n          local_a8 = (long)iVar6 + uVar15;\n          local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n          uVar15 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar23) goto LAB_003487c0;\nLAB_00348b10:\n          bVar22 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar6 == -1 && (bVar22 && bVar23);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      }" { (expression_statement "cVar5 = (char)uVar12;" (assignment_expression "cVar5 = (char)uVar12" identifier = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar6 = (int)cVar5;" (assignment_expression "iVar6 = (int)cVar5" identifier = (cast_expression "(int)cVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }" if (parenthesized_expression "(local_a0 < 0xb)" ( (binary_expression "local_a0 < 0xb" identifier < number_literal) )) (compound_statement "{\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }" { (if_statement "if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;" if (parenthesized_expression "((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5))" ( (binary_expression "(cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)" (parenthesized_expression "(cVar5 < '0')" ( (binary_expression "cVar5 < '0'" identifier < (char_literal "'0'" ' character ')) )) || (parenthesized_expression "((char)((char)local_a0 + '0') <= cVar5)" ( (binary_expression "(char)((char)local_a0 + '0') <= cVar5" (cast_expression "(char)((char)local_a0 + '0')" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)local_a0 + '0')" ( (binary_expression "(char)local_a0 + '0'" (cast_expression "(char)local_a0" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'0'" ' character ')) ))) <= identifier) ))) )) (goto_statement "goto LAB_003489c8;" goto statement_identifier ;)) (labeled_statement "LAB_00348742:\n          iVar6 = iVar6 + -0x30;" statement_identifier : (expression_statement "iVar6 = iVar6 + -0x30;" (assignment_expression "iVar6 = iVar6 + -0x30" identifier = (binary_expression "iVar6 + -0x30" identifier + number_literal)) ;)) }) (else_clause "else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }" else (compound_statement "{\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }" { (if_statement "if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;" if (parenthesized_expression "((byte)(cVar5 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar5 - 0x30U) < 10" (call_expression "(byte)(cVar5 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 - 0x30U)" ( (binary_expression "cVar5 - 0x30U" identifier - number_literal) ))) < number_literal) )) (goto_statement "goto LAB_00348742;" goto statement_identifier ;)) (if_statement "if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }" if (parenthesized_expression "((byte)(cVar5 + 0x9fU) < 6)" ( (binary_expression "(byte)(cVar5 + 0x9fU) < 6" (call_expression "(byte)(cVar5 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 + 0x9fU)" ( (binary_expression "cVar5 + 0x9fU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n            iVar6 = iVar6 + -0x57;\n          }" { (expression_statement "iVar6 = iVar6 + -0x57;" (assignment_expression "iVar6 = iVar6 + -0x57" identifier = (binary_expression "iVar6 + -0x57" identifier + number_literal)) ;) }) (else_clause "else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }" else (compound_statement "{\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }" { (if_statement "if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;" if (parenthesized_expression "(5 < (byte)(cVar5 + 0xbfU))" ( (binary_expression "5 < (byte)(cVar5 + 0xbfU)" number_literal < (call_expression "(byte)(cVar5 + 0xbfU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 + 0xbfU)" ( (binary_expression "cVar5 + 0xbfU" identifier + number_literal) )))) )) (goto_statement "goto LAB_003489c8;" goto statement_identifier ;)) (expression_statement "iVar6 = iVar6 + -0x37;" (assignment_expression "iVar6 = iVar6 + -0x37" identifier = (binary_expression "iVar6 + -0x37" identifier + number_literal)) ;) }))) }))) (if_statement "if (iVar6 == -1) goto LAB_003489c8;" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (goto_statement "goto LAB_003489c8;" goto statement_identifier ;)) (expression_statement "bVar22 = bVar23;" (assignment_expression "bVar22 = bVar23" identifier = identifier) ;) (if_statement "if (uVar9 / uVar16 < local_a8) {\n          local_6a = 1;\n          uVar15 = param_2[2];\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar22 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar15 = local_a8 * uVar16;\n          local_a8 = (long)iVar6 + uVar15;\n          local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n          uVar15 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar23) goto LAB_003487c0;\nLAB_00348b10:\n          bVar22 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar6 == -1 && (bVar22 && bVar23);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }" if (parenthesized_expression "(uVar9 / uVar16 < local_a8)" ( (binary_expression "uVar9 / uVar16 < local_a8" (binary_expression "uVar9 / uVar16" identifier / identifier) < identifier) )) (compound_statement "{\n          local_6a = 1;\n          uVar15 = param_2[2];\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar22 == bVar4) goto LAB_003487c9;\n        }" { (expression_statement "local_6a = 1;" (assignment_expression "local_6a = 1" identifier = number_literal) ;) (expression_statement "uVar15 = param_2[2];" (assignment_expression "uVar15 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (if_statement "if (uVar15 < (ulong)param_2[3]) goto LAB_00348793;" if (parenthesized_expression "(uVar15 < (ulong)param_2[3])" ( (binary_expression "uVar15 < (ulong)param_2[3]" identifier < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348793;" goto statement_identifier ;)) (labeled_statement "LAB_00348ac3:\n                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */\n          (**(code **)(*param_2 + 0x50))(param_2);" statement_identifier : comment (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;)) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_003487ac;" goto statement_identifier ;)) (labeled_statement "LAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" statement_identifier : (expression_statement "iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar6 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;)) (expression_statement "bVar4 = iVar6 == -1;" (assignment_expression "bVar4 = iVar6 == -1" identifier = (binary_expression "iVar6 == -1" identifier == number_literal)) ;) (if_statement "if (bVar4) {\n            param_2 = (long *)0x0;\n          }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n            param_2 = (long *)0x0;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (local_c0 != (long *)0x0 && bVar23) goto LAB_00348b10;" if (parenthesized_expression "(local_c0 != (long *)0x0 && bVar23)" ( (binary_expression "local_c0 != (long *)0x0 && bVar23" (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) (goto_statement "goto LAB_00348b10;" goto statement_identifier ;)) (labeled_statement "LAB_003487c0:\n          if (bVar22 == bVar4) goto LAB_003487c9;" statement_identifier : (if_statement "if (bVar22 == bVar4) goto LAB_003487c9;" if (parenthesized_expression "(bVar22 == bVar4)" ( (binary_expression "bVar22 == bVar4" identifier == identifier) )) (goto_statement "goto LAB_003487c9;" goto statement_identifier ;))) }) (else_clause "else {\n          uVar15 = local_a8 * uVar16;\n          local_a8 = (long)iVar6 + uVar15;\n          local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n          uVar15 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar23) goto LAB_003487c0;\nLAB_00348b10:\n          bVar22 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar6 == -1 && (bVar22 && bVar23);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }" else (compound_statement "{\n          uVar15 = local_a8 * uVar16;\n          local_a8 = (long)iVar6 + uVar15;\n          local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n          uVar15 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar23) goto LAB_003487c0;\nLAB_00348b10:\n          bVar22 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar6 == -1 && (bVar22 && bVar23);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }" { (expression_statement "uVar15 = local_a8 * uVar16;" (assignment_expression "uVar15 = local_a8 * uVar16" identifier = (binary_expression "local_a8 * uVar16" identifier * identifier)) ;) (expression_statement "local_a8 = (long)iVar6 + uVar15;" (assignment_expression "local_a8 = (long)iVar6 + uVar15" identifier = (binary_expression "(long)iVar6 + uVar15" (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;" (assignment_expression "local_6a = local_6a | uVar9 - (long)iVar6 < uVar15" identifier = (binary_expression "local_6a | uVar9 - (long)iVar6 < uVar15" identifier | (binary_expression "uVar9 - (long)iVar6 < uVar15" (binary_expression "uVar9 - (long)iVar6" identifier - (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) < identifier))) ;) (expression_statement "uVar15 = param_2[2];" (assignment_expression "uVar15 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if ((ulong)param_2[3] <= uVar15) goto LAB_00348ac3;" if (parenthesized_expression "((ulong)param_2[3] <= uVar15)" ( (binary_expression "(ulong)param_2[3] <= uVar15" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_00348ac3;" goto statement_identifier ;)) (labeled_statement "LAB_00348793:\n          param_2[2] = uVar15 + 1;" statement_identifier : (expression_statement "param_2[2] = uVar15 + 1;" (assignment_expression "param_2[2] = uVar15 + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar15 + 1" identifier + number_literal)) ;)) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348ae0;" goto statement_identifier ;)) (labeled_statement "LAB_003487ac:\n          bVar4 = false;" statement_identifier : (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;)) (if_statement "if (local_c0 == (long *)0x0 || !bVar23) goto LAB_003487c0;" if (parenthesized_expression "(local_c0 == (long *)0x0 || !bVar23)" ( (binary_expression "local_c0 == (long *)0x0 || !bVar23" (binary_expression "local_c0 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar23" ! identifier)) )) (goto_statement "goto LAB_003487c0;" goto statement_identifier ;)) (labeled_statement "LAB_00348b10:\n          bVar22 = local_c0 != (long *)0x0;" statement_identifier : (expression_statement "bVar22 = local_c0 != (long *)0x0;" (assignment_expression "bVar22 = local_c0 != (long *)0x0" identifier = (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ;)) (if_statement "if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar6 == -1 && (bVar22 && bVar23);\n            goto LAB_003487c0;\n          }" if (parenthesized_expression "((ulong)local_c0[3] <= (ulong)local_c0[2])" ( (binary_expression "(ulong)local_c0[3] <= (ulong)local_c0[2]" (cast_expression "(ulong)local_c0[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_c0[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[2]" identifier [ number_literal ]))) )) (compound_statement "{\n                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar22 = iVar6 == -1 && (bVar22 && bVar23);\n            goto LAB_003487c0;\n          }" { comment (expression_statement "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0)" identifier = (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" ( (pointer_expression "**(code **)(*local_c0 + 0x48)" * (pointer_expression "*(code **)(*local_c0 + 0x48)" * (cast_expression "(code **)(*local_c0 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_c0 + 0x48)" ( (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" * identifier) + number_literal) ))))) )) (argument_list "(local_c0)" ( identifier )))) ;) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }" if (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) (compound_statement "{\n              plVar2 = local_c0;\n            }" { (expression_statement "plVar2 = local_c0;" (assignment_expression "plVar2 = local_c0" identifier = identifier) ;) })) (expression_statement "local_c0 = plVar2;" (assignment_expression "local_c0 = plVar2" identifier = identifier) ;) (expression_statement "bVar22 = iVar6 == -1 && (bVar22 && bVar23);" (assignment_expression "bVar22 = iVar6 == -1 && (bVar22 && bVar23)" identifier = (binary_expression "iVar6 == -1 && (bVar22 && bVar23)" (binary_expression "iVar6 == -1" identifier == number_literal) && (parenthesized_expression "(bVar22 && bVar23)" ( (binary_expression "bVar22 && bVar23" identifier && identifier) )))) ;) (goto_statement "goto LAB_003487c0;" goto statement_identifier ;) })) (if_statement "if (bVar4 == false) goto LAB_003487c9;" if (parenthesized_expression "(bVar4 == false)" ( (binary_expression "bVar4 == false" identifier == false) )) (goto_statement "goto LAB_003487c9;" goto statement_identifier ;)) }))) (if_statement "if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar12 = 0xffffffff;\n        }" { (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }" else (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          uVar12 = (uint)*(byte *)param_2[2];\n        }" { (expression_statement "uVar12 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar12 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }" else (compound_statement "{\n                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }" { comment (expression_statement "uVar12 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar12 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }" if (parenthesized_expression "(uVar12 == 0xffffffff)" ( (binary_expression "uVar12 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) })) }))))) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" identifier = number_literal) ;) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" identifier = false) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar15 = local_50;\n        cVar5 = (char)uVar12;\n        if ((*(byte *)(lVar20 + 0x20) == 0) || (*(char *)(lVar20 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar20 + 0x48)) ||\n             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar10 - (int)(void *)(lVar20 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar9 / uVar16) {\n            uVar15 = local_a8 * uVar16;\n            local_a8 = (long)iVar6 + uVar15;\n            local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar15 = param_2[2];\n          local_6a = bVar3;\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar19 = 0;\n            local_6b = (bool)*(byte *)(lVar20 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar11 = 0xf;\n          }\n          else {\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar11 < uVar1) {\n            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar15] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar15 = param_2[2];\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar22 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar22) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }" else (compound_statement "{\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar15 = local_50;\n        cVar5 = (char)uVar12;\n        if ((*(byte *)(lVar20 + 0x20) == 0) || (*(char *)(lVar20 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar20 + 0x48)) ||\n             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar10 - (int)(void *)(lVar20 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar9 / uVar16) {\n            uVar15 = local_a8 * uVar16;\n            local_a8 = (long)iVar6 + uVar15;\n            local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar15 = param_2[2];\n          local_6a = bVar3;\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar19 = 0;\n            local_6b = (bool)*(byte *)(lVar20 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar11 = 0xf;\n          }\n          else {\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar11 < uVar1) {\n            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar15] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar15 = param_2[2];\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar22 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar22) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }" { (if_statement "if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar15 = local_50;\n        cVar5 = (char)uVar12;\n        if ((*(byte *)(lVar20 + 0x20) == 0) || (*(char *)(lVar20 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar20 + 0x48)) ||\n             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar10 - (int)(void *)(lVar20 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar9 / uVar16) {\n            uVar15 = local_a8 * uVar16;\n            local_a8 = (long)iVar6 + uVar15;\n            local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar15 = param_2[2];\n          local_6a = bVar3;\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar19 = 0;\n            local_6b = (bool)*(byte *)(lVar20 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar11 = 0xf;\n          }\n          else {\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar11 < uVar1) {\n            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar15] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar15 = param_2[2];\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar22 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar22) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" if (parenthesized_expression "(local_6b == false)" ( (binary_expression "local_6b == false" identifier == false) )) (compound_statement "{\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar15 = local_50;\n        cVar5 = (char)uVar12;\n        if ((*(byte *)(lVar20 + 0x20) == 0) || (*(char *)(lVar20 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar20 + 0x48)) ||\n             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar10 - (int)(void *)(lVar20 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar9 / uVar16) {\n            uVar15 = local_a8 * uVar16;\n            local_a8 = (long)iVar6 + uVar15;\n            local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar15 = param_2[2];\n          local_6a = bVar3;\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar19 = 0;\n            local_6b = (bool)*(byte *)(lVar20 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar11 = 0xf;\n          }\n          else {\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar11 < uVar1) {\n            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar15] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar15 = param_2[2];\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar22 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar22) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" { (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar15 = local_50;\n        cVar5 = (char)uVar12;\n        if ((*(byte *)(lVar20 + 0x20) == 0) || (*(char *)(lVar20 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar20 + 0x48)) ||\n             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar10 - (int)(void *)(lVar20 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar9 / uVar16) {\n            uVar15 = local_a8 * uVar16;\n            local_a8 = (long)iVar6 + uVar15;\n            local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar15 = param_2[2];\n          local_6a = bVar3;\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar19 = 0;\n            local_6b = (bool)*(byte *)(lVar20 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar11 = 0xf;\n          }\n          else {\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar11 < uVar1) {\n            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar15] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar15 = param_2[2];\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar22 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar22) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );" do (compound_statement "{\n        uVar15 = local_50;\n        cVar5 = (char)uVar12;\n        if ((*(byte *)(lVar20 + 0x20) == 0) || (*(char *)(lVar20 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar20 + 0x48)) ||\n             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar10 - (int)(void *)(lVar20 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar9 / uVar16) {\n            uVar15 = local_a8 * uVar16;\n            local_a8 = (long)iVar6 + uVar15;\n            local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar15 = param_2[2];\n          local_6a = bVar3;\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar19 = 0;\n            local_6b = (bool)*(byte *)(lVar20 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar11 = 0xf;\n          }\n          else {\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar11 < uVar1) {\n            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar15] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar15 = param_2[2];\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar23;\n        bVar22 = bVar23;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar22 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar22) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      }" { (expression_statement "uVar15 = local_50;" (assignment_expression "uVar15 = local_50" identifier = identifier) ;) (expression_statement "cVar5 = (char)uVar12;" (assignment_expression "cVar5 = (char)uVar12" identifier = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if ((*(byte *)(lVar20 + 0x20) == 0) || (*(char *)(lVar20 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar20 + 0x48)) ||\n             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar10 - (int)(void *)(lVar20 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar9 / uVar16) {\n            uVar15 = local_a8 * uVar16;\n            local_a8 = (long)iVar6 + uVar15;\n            local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar15 = param_2[2];\n          local_6a = bVar3;\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar19 = 0;\n            local_6b = (bool)*(byte *)(lVar20 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar11 = 0xf;\n          }\n          else {\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar11 < uVar1) {\n            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar15] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar15 = param_2[2];\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }" if (parenthesized_expression "((*(byte *)(lVar20 + 0x20) == 0) || (*(char *)(lVar20 + 0x49) != cVar5))" ( (binary_expression "(*(byte *)(lVar20 + 0x20) == 0) || (*(char *)(lVar20 + 0x49) != cVar5)" (parenthesized_expression "(*(byte *)(lVar20 + 0x20) == 0)" ( (binary_expression "*(byte *)(lVar20 + 0x20) == 0" (pointer_expression "*(byte *)(lVar20 + 0x20)" * (cast_expression "(byte *)(lVar20 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x20)" ( (binary_expression "lVar20 + 0x20" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(char *)(lVar20 + 0x49) != cVar5)" ( (binary_expression "*(char *)(lVar20 + 0x49) != cVar5" (pointer_expression "*(char *)(lVar20 + 0x49)" * (cast_expression "(char *)(lVar20 + 0x49)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x49)" ( (binary_expression "lVar20 + 0x49" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n          if ((cVar5 == *(char *)(lVar20 + 0x48)) ||\n             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar10 - (int)(void *)(lVar20 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar9 / uVar16) {\n            uVar15 = local_a8 * uVar16;\n            local_a8 = (long)iVar6 + uVar15;\n            local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar15 = param_2[2];\n          local_6a = bVar3;\n          if (uVar15 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }" { (if_statement "if ((cVar5 == *(char *)(lVar20 + 0x48)) ||\n             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)\n             ) goto LAB_003489c8;" if (parenthesized_expression "((cVar5 == *(char *)(lVar20 + 0x48)) ||\n             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)\n             )" ( (binary_expression "(cVar5 == *(char *)(lVar20 + 0x48)) ||\n             (pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)" (parenthesized_expression "(cVar5 == *(char *)(lVar20 + 0x48))" ( (binary_expression "cVar5 == *(char *)(lVar20 + 0x48)" identifier == (pointer_expression "*(char *)(lVar20 + 0x48)" * (cast_expression "(char *)(lVar20 + 0x48)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x48)" ( (binary_expression "lVar20 + 0x48" identifier + number_literal) ))))) )) || (parenthesized_expression "(pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0)" ( (comma_expression "pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0), pvVar10 == (void *)0x0" (assignment_expression "pvVar10 = memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0)" identifier = (call_expression "memchr((void *)(lVar20 + 0x72),(int)cVar5,local_a0)" identifier (argument_list "((void *)(lVar20 + 0x72),(int)cVar5,local_a0)" ( (cast_expression "(void *)(lVar20 + 0x72)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x72)" ( (binary_expression "lVar20 + 0x72" identifier + number_literal) ))) , (cast_expression "(int)cVar5" ( (type_descriptor "int" primitive_type) ) identifier) , identifier )))) , (binary_expression "pvVar10 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_003489c8;" goto statement_identifier ;)) (expression_statement "iVar6 = (int)pvVar10 - (int)(void *)(lVar20 + 0x72);" (assignment_expression "iVar6 = (int)pvVar10 - (int)(void *)(lVar20 + 0x72)" identifier = (binary_expression "(int)pvVar10 - (int)(void *)(lVar20 + 0x72)" (cast_expression "(int)pvVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)(void *)(lVar20 + 0x72)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(void *)(lVar20 + 0x72)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x72)" ( (binary_expression "lVar20 + 0x72" identifier + number_literal) )))))) ;) (if_statement "if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }" if (parenthesized_expression "(0xf < iVar6)" ( (binary_expression "0xf < iVar6" number_literal < identifier) )) (compound_statement "{\n            iVar6 = iVar6 + -6;\n          }" { (expression_statement "iVar6 = iVar6 + -6;" (assignment_expression "iVar6 = iVar6 + -6" identifier = (binary_expression "iVar6 + -6" identifier + number_literal)) ;) })) (if_statement "if (local_a8 <= uVar9 / uVar16) {\n            uVar15 = local_a8 * uVar16;\n            local_a8 = (long)iVar6 + uVar15;\n            local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }" if (parenthesized_expression "(local_a8 <= uVar9 / uVar16)" ( (binary_expression "local_a8 <= uVar9 / uVar16" identifier <= (binary_expression "uVar9 / uVar16" identifier / identifier)) )) (compound_statement "{\n            uVar15 = local_a8 * uVar16;\n            local_a8 = (long)iVar6 + uVar15;\n            local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }" { (expression_statement "uVar15 = local_a8 * uVar16;" (assignment_expression "uVar15 = local_a8 * uVar16" identifier = (binary_expression "local_a8 * uVar16" identifier * identifier)) ;) (expression_statement "local_a8 = (long)iVar6 + uVar15;" (assignment_expression "local_a8 = (long)iVar6 + uVar15" identifier = (binary_expression "(long)iVar6 + uVar15" (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "local_6a = local_6a | uVar9 - (long)iVar6 < uVar15;" (assignment_expression "local_6a = local_6a | uVar9 - (long)iVar6 < uVar15" identifier = (binary_expression "local_6a | uVar9 - (long)iVar6 < uVar15" identifier | (binary_expression "uVar9 - (long)iVar6 < uVar15" (binary_expression "uVar9 - (long)iVar6" identifier - (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) < identifier))) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00348c3c;" goto statement_identifier ;) })) (expression_statement "uVar15 = param_2[2];" (assignment_expression "uVar15 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "local_6a = bVar3;" (assignment_expression "local_6a = bVar3" identifier = identifier) ;) (if_statement "if (uVar15 < (ulong)param_2[3]) goto LAB_00348c46;" if (parenthesized_expression "(uVar15 < (ulong)param_2[3])" ( (binary_expression "uVar15 < (ulong)param_2[3]" identifier < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348c46;" goto statement_identifier ;)) (labeled_statement "LAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);" statement_identifier : (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;)) (expression_statement "local_b8._0_1_ = 0;" (assignment_expression "local_b8._0_1_ = 0" (field_expression "local_b8._0_1_" identifier . field_identifier) = number_literal) ;) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (compound_statement "{\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }" { (labeled_statement "LAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" statement_identifier : (expression_statement "iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar6 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;)) (expression_statement "local_b8._0_1_ = 0;" (assignment_expression "local_b8._0_1_ = 0" (field_expression "local_b8._0_1_" identifier . field_identifier) = number_literal) ;) (if_statement "if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b8._0_1_ = bVar3;" (assignment_expression "local_b8._0_1_ = bVar3" (field_expression "local_b8._0_1_" identifier . field_identifier) = identifier) ;) })) })) }) (else_clause "else {\n          if (iVar8 == 0) {\n            bVar19 = 0;\n            local_6b = (bool)*(byte *)(lVar20 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar11 = 0xf;\n          }\n          else {\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar11 < uVar1) {\n            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar15] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar15 = param_2[2];\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }" else (compound_statement "{\n          if (iVar8 == 0) {\n            bVar19 = 0;\n            local_6b = (bool)*(byte *)(lVar20 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar11 = 0xf;\n          }\n          else {\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar11 < uVar1) {\n            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar15] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar15 = param_2[2];\n          if ((ulong)param_2[3] <= uVar15) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar15 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }" { (if_statement "if (iVar8 == 0) {\n            bVar19 = 0;\n            local_6b = (bool)*(byte *)(lVar20 + 0x20);\n            goto joined_r0x003487e4;\n          }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n            bVar19 = 0;\n            local_6b = (bool)*(byte *)(lVar20 + 0x20);\n            goto joined_r0x003487e4;\n          }" { (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "local_6b = (bool)*(byte *)(lVar20 + 0x20);" (assignment_expression "local_6b = (bool)*(byte *)(lVar20 + 0x20)" identifier = (cast_expression "(bool)*(byte *)(lVar20 + 0x20)" ( (type_descriptor "bool" primitive_type) ) (pointer_expression "*(byte *)(lVar20 + 0x20)" * (cast_expression "(byte *)(lVar20 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x20)" ( (binary_expression "lVar20 + 0x20" identifier + number_literal) )))))) ;) (goto_statement "goto joined_r0x003487e4;" goto statement_identifier ;) })) (expression_statement "uVar1 = local_50 + 1;" (assignment_expression "uVar1 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (if_statement "if (local_58 == &local_48) {\n            uVar11 = 0xf;\n          }\n          else {\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n            uVar11 = 0xf;\n          }" { (expression_statement "uVar11 = 0xf;" (assignment_expression "uVar11 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }" else (compound_statement "{\n            uVar11 = CONCAT71(uStack_47,local_48);\n          }" { (expression_statement "uVar11 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar11 = CONCAT71(uStack_47,local_48)" identifier = (call_expression "CONCAT71(uStack_47,local_48)" identifier (argument_list "(uStack_47,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar11 < uVar1) {\n            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n          }" if (parenthesized_expression "(uVar11 < uVar1)" ( (binary_expression "uVar11 < uVar1" identifier < identifier) )) (compound_statement "{\n            std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);\n          }" { (labeled_statement "std::string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1);" (call_expression "_M_mutate((string *)&local_58,local_50,0,(char *)0x0,1)" identifier (argument_list "((string *)&local_58,local_50,0,(char *)0x0,1)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "local_b0 = (undefined1)iVar8;" (assignment_expression "local_b0 = (undefined1)iVar8" identifier = (cast_expression "(undefined1)iVar8" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "local_58[uVar15] = local_b0;" (assignment_expression "local_58[uVar15] = local_b0" (subscript_expression "local_58[uVar15]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_58[uVar1] = 0;" (assignment_expression "local_58[uVar1] = 0" (subscript_expression "local_58[uVar1]" identifier [ identifier ]) = number_literal) ;) (expression_statement "local_50 = uVar1;" (assignment_expression "local_50 = uVar1" identifier = identifier) ;) (labeled_statement "LAB_00348c3c:\n          uVar15 = param_2[2];" statement_identifier : (expression_statement "uVar15 = param_2[2];" (assignment_expression "uVar15 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;)) (if_statement "if ((ulong)param_2[3] <= uVar15) goto LAB_00348c9f;" if (parenthesized_expression "((ulong)param_2[3] <= uVar15)" ( (binary_expression "(ulong)param_2[3] <= uVar15" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_00348c9f;" goto statement_identifier ;)) (labeled_statement "LAB_00348c46:\n          local_b8._0_1_ = 0;" statement_identifier : (expression_statement "local_b8._0_1_ = 0;" (assignment_expression "local_b8._0_1_ = 0" (field_expression "local_b8._0_1_" identifier . field_identifier) = number_literal) ;)) (expression_statement "param_2[2] = uVar15 + 1;" (assignment_expression "param_2[2] = uVar15 + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348cc0;" goto statement_identifier ;)) }))) (expression_statement "bVar4 = local_c0 != (long *)0x0 && bVar23;" (assignment_expression "bVar4 = local_c0 != (long *)0x0 && bVar23" identifier = (binary_expression "local_c0 != (long *)0x0 && bVar23" (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar22 = bVar23;" (assignment_expression "bVar22 = bVar23" identifier = identifier) ;) (if_statement "if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar22 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar22 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }" { (if_statement "if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar22 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar22 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }" if (parenthesized_expression "((ulong)local_c0[2] < (ulong)local_c0[3])" ( (binary_expression "(ulong)local_c0[2] < (ulong)local_c0[3]" (cast_expression "(ulong)local_c0[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_c0[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[3]" identifier [ number_literal ]))) )) (compound_statement "{\n            bVar22 = false;\n          }" { (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) }) (else_clause "else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar22 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }" else (compound_statement "{\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar22 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }" { (expression_statement "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0)" identifier = (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" ( (pointer_expression "**(code **)(*local_c0 + 0x48)" * (pointer_expression "*(code **)(*local_c0 + 0x48)" * (cast_expression "(code **)(*local_c0 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_c0 + 0x48)" ( (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" * identifier) + number_literal) ))))) )) (argument_list "(local_c0)" ( identifier )))) ;) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }" if (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) (compound_statement "{\n              plVar2 = local_c0;\n            }" { (expression_statement "plVar2 = local_c0;" (assignment_expression "plVar2 = local_c0" identifier = identifier) ;) })) (expression_statement "bVar22 = iVar6 == -1 && bVar4;" (assignment_expression "bVar22 = iVar6 == -1 && bVar4" identifier = (binary_expression "iVar6 == -1 && bVar4" (binary_expression "iVar6 == -1" identifier == number_literal) && identifier)) ;) (expression_statement "local_c0 = plVar2;" (assignment_expression "local_c0 = plVar2" identifier = identifier) ;) }))) })) (if_statement "if ((bool)(byte)local_b8 == bVar22) goto code_r0x00348c77;" if (parenthesized_expression "((bool)(byte)local_b8 == bVar22)" ( (binary_expression "(bool)(byte)local_b8 == bVar22" (cast_expression "(bool)(byte)local_b8" ( (type_descriptor "bool" primitive_type) ) (cast_expression "(byte)local_b8" ( (type_descriptor "byte" type_identifier) ) identifier)) == identifier) )) (goto_statement "goto code_r0x00348c77;" goto statement_identifier ;)) (if_statement "if (param_2 == (long *)0x0) {\n          uVar12 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar12 = 0xffffffff;\n        }" { (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }" else (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar12 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          uVar12 = (uint)*(byte *)param_2[2];\n        }" { (expression_statement "uVar12 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar12 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }" else (compound_statement "{\n                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */\n          uVar12 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }\n        }" { comment (expression_statement "uVar12 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar12 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar12 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }" if (parenthesized_expression "(uVar12 == 0xffffffff)" ( (binary_expression "uVar12 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            param_2 = (long *)0x0;\n            uVar12 = 0xffffffff;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) })) }))))) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" identifier = number_literal) ;) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" identifier = false) ;) }))) (labeled_statement "joined_r0x003487e4:\n  if (uVar15 == 0) {\n    local_50 = 0;\n    if ((bVar17) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar9 = -local_a8;\n          if (!bVar21) {\n            uVar9 = local_a8;\n          }\n          *param_8 = uVar9;\n        }\n        else {\n          uVar9 = 0x8000000000000000;\n          if (!bVar21) {\n            uVar9 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar9;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }\n  else {\n    local_b0 = (undefined1)iVar8;\n    uVar9 = uVar15 + 1;\n    if (local_58 == &local_48) {\n      uVar16 = 0xf;\n    }\n    else {\n      uVar16 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar16 < uVar9) {\n      local_50 = uVar15;\n      std::string::_M_mutate((string *)&local_58,uVar15,0,(char *)0x0,1);\n    }\n    local_58[uVar15] = local_b0;\n    local_58[uVar9] = 0;\n    local_50 = uVar9;\n    cVar5 = __verify_grouping(*(char **)(lVar20 + 0x10),*(ulong *)(lVar20 + 0x18),\n                              (string *)&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar17)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" statement_identifier : (if_statement "if (uVar15 == 0) {\n    local_50 = 0;\n    if ((bVar17) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar9 = -local_a8;\n          if (!bVar21) {\n            uVar9 = local_a8;\n          }\n          *param_8 = uVar9;\n        }\n        else {\n          uVar9 = 0x8000000000000000;\n          if (!bVar21) {\n            uVar9 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar9;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }\n  else {\n    local_b0 = (undefined1)iVar8;\n    uVar9 = uVar15 + 1;\n    if (local_58 == &local_48) {\n      uVar16 = 0xf;\n    }\n    else {\n      uVar16 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar16 < uVar9) {\n      local_50 = uVar15;\n      std::string::_M_mutate((string *)&local_58,uVar15,0,(char *)0x0,1);\n    }\n    local_58[uVar15] = local_b0;\n    local_58[uVar9] = 0;\n    local_50 = uVar9;\n    cVar5 = __verify_grouping(*(char **)(lVar20 + 0x10),*(ulong *)(lVar20 + 0x18),\n                              (string *)&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar17)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (compound_statement "{\n    local_50 = 0;\n    if ((bVar17) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar9 = -local_a8;\n          if (!bVar21) {\n            uVar9 = local_a8;\n          }\n          *param_8 = uVar9;\n        }\n        else {\n          uVar9 = 0x8000000000000000;\n          if (!bVar21) {\n            uVar9 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar9;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }" { (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (if_statement "if ((bVar17) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar9 = -local_a8;\n          if (!bVar21) {\n            uVar9 = local_a8;\n          }\n          *param_8 = uVar9;\n        }\n        else {\n          uVar9 = 0x8000000000000000;\n          if (!bVar21) {\n            uVar9 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar9;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }" if (parenthesized_expression "((bVar17) || (iVar8 != 0))" ( (binary_expression "(bVar17) || (iVar8 != 0)" (parenthesized_expression "(bVar17)" ( identifier )) || (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) ))) )) (compound_statement "{\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar9 = -local_a8;\n          if (!bVar21) {\n            uVar9 = local_a8;\n          }\n          *param_8 = uVar9;\n        }\n        else {\n          uVar9 = 0x8000000000000000;\n          if (!bVar21) {\n            uVar9 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar9;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }" { (labeled_statement "LAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar9 = -local_a8;\n          if (!bVar21) {\n            uVar9 = local_a8;\n          }\n          *param_8 = uVar9;\n        }\n        else {\n          uVar9 = 0x8000000000000000;\n          if (!bVar21) {\n            uVar9 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar9;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }" statement_identifier : (if_statement "if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar9 = -local_a8;\n          if (!bVar21) {\n            uVar9 = local_a8;\n          }\n          *param_8 = uVar9;\n        }\n        else {\n          uVar9 = 0x8000000000000000;\n          if (!bVar21) {\n            uVar9 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar9;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }" if (parenthesized_expression "(local_6b == false)" ( (binary_expression "local_6b == false" identifier == false) )) (compound_statement "{\n        if (local_6a == 0) {\n          uVar9 = -local_a8;\n          if (!bVar21) {\n            uVar9 = local_a8;\n          }\n          *param_8 = uVar9;\n        }\n        else {\n          uVar9 = 0x8000000000000000;\n          if (!bVar21) {\n            uVar9 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar9;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }" { (if_statement "if (local_6a == 0) {\n          uVar9 = -local_a8;\n          if (!bVar21) {\n            uVar9 = local_a8;\n          }\n          *param_8 = uVar9;\n        }\n        else {\n          uVar9 = 0x8000000000000000;\n          if (!bVar21) {\n            uVar9 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar9;\n          *param_7 = 4;\n        }" if (parenthesized_expression "(local_6a == 0)" ( (binary_expression "local_6a == 0" identifier == number_literal) )) (compound_statement "{\n          uVar9 = -local_a8;\n          if (!bVar21) {\n            uVar9 = local_a8;\n          }\n          *param_8 = uVar9;\n        }" { (expression_statement "uVar9 = -local_a8;" (assignment_expression "uVar9 = -local_a8" identifier = (unary_expression "-local_a8" - identifier)) ;) (if_statement "if (!bVar21) {\n            uVar9 = local_a8;\n          }" if (parenthesized_expression "(!bVar21)" ( (unary_expression "!bVar21" ! identifier) )) (compound_statement "{\n            uVar9 = local_a8;\n          }" { (expression_statement "uVar9 = local_a8;" (assignment_expression "uVar9 = local_a8" identifier = identifier) ;) })) (expression_statement "*param_8 = uVar9;" (assignment_expression "*param_8 = uVar9" (pointer_expression "*param_8" * identifier) = identifier) ;) }) (else_clause "else {\n          uVar9 = 0x8000000000000000;\n          if (!bVar21) {\n            uVar9 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar9;\n          *param_7 = 4;\n        }" else (compound_statement "{\n          uVar9 = 0x8000000000000000;\n          if (!bVar21) {\n            uVar9 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar9;\n          *param_7 = 4;\n        }" { (expression_statement "uVar9 = 0x8000000000000000;" (assignment_expression "uVar9 = 0x8000000000000000" identifier = number_literal) ;) (if_statement "if (!bVar21) {\n            uVar9 = 0x7fffffffffffffff;\n          }" if (parenthesized_expression "(!bVar21)" ( (unary_expression "!bVar21" ! identifier) )) (compound_statement "{\n            uVar9 = 0x7fffffffffffffff;\n          }" { (expression_statement "uVar9 = 0x7fffffffffffffff;" (assignment_expression "uVar9 = 0x7fffffffffffffff" identifier = number_literal) ;) })) (expression_statement "*param_8 = uVar9;" (assignment_expression "*param_8 = uVar9" (pointer_expression "*param_8" * identifier) = identifier) ;) (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" * identifier) = number_literal) ;) }))) (goto_statement "goto LAB_0034881d;" goto statement_identifier ;) }))) })) }) (else_clause "else {\n    local_b0 = (undefined1)iVar8;\n    uVar9 = uVar15 + 1;\n    if (local_58 == &local_48) {\n      uVar16 = 0xf;\n    }\n    else {\n      uVar16 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar16 < uVar9) {\n      local_50 = uVar15;\n      std::string::_M_mutate((string *)&local_58,uVar15,0,(char *)0x0,1);\n    }\n    local_58[uVar15] = local_b0;\n    local_58[uVar9] = 0;\n    local_50 = uVar9;\n    cVar5 = __verify_grouping(*(char **)(lVar20 + 0x10),*(ulong *)(lVar20 + 0x18),\n                              (string *)&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar17)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" else (compound_statement "{\n    local_b0 = (undefined1)iVar8;\n    uVar9 = uVar15 + 1;\n    if (local_58 == &local_48) {\n      uVar16 = 0xf;\n    }\n    else {\n      uVar16 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar16 < uVar9) {\n      local_50 = uVar15;\n      std::string::_M_mutate((string *)&local_58,uVar15,0,(char *)0x0,1);\n    }\n    local_58[uVar15] = local_b0;\n    local_58[uVar9] = 0;\n    local_50 = uVar9;\n    cVar5 = __verify_grouping(*(char **)(lVar20 + 0x10),*(ulong *)(lVar20 + 0x18),\n                              (string *)&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar17)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" { (expression_statement "local_b0 = (undefined1)iVar8;" (assignment_expression "local_b0 = (undefined1)iVar8" identifier = (cast_expression "(undefined1)iVar8" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar9 = uVar15 + 1;" (assignment_expression "uVar9 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (if_statement "if (local_58 == &local_48) {\n      uVar16 = 0xf;\n    }\n    else {\n      uVar16 = CONCAT71(uStack_47,local_48);\n    }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n      uVar16 = 0xf;\n    }" { (expression_statement "uVar16 = 0xf;" (assignment_expression "uVar16 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n      uVar16 = CONCAT71(uStack_47,local_48);\n    }" else (compound_statement "{\n      uVar16 = CONCAT71(uStack_47,local_48);\n    }" { (expression_statement "uVar16 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar16 = CONCAT71(uStack_47,local_48)" identifier = (call_expression "CONCAT71(uStack_47,local_48)" identifier (argument_list "(uStack_47,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar16 < uVar9) {\n      local_50 = uVar15;\n      std::string::_M_mutate((string *)&local_58,uVar15,0,(char *)0x0,1);\n    }" if (parenthesized_expression "(uVar16 < uVar9)" ( (binary_expression "uVar16 < uVar9" identifier < identifier) )) (compound_statement "{\n      local_50 = uVar15;\n      std::string::_M_mutate((string *)&local_58,uVar15,0,(char *)0x0,1);\n    }" { (expression_statement "local_50 = uVar15;" (assignment_expression "local_50 = uVar15" identifier = identifier) ;) (labeled_statement "std::string::_M_mutate((string *)&local_58,uVar15,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((string *)&local_58,uVar15,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((string *)&local_58,uVar15,0,(char *)0x0,1);" (call_expression "_M_mutate((string *)&local_58,uVar15,0,(char *)0x0,1)" identifier (argument_list "((string *)&local_58,uVar15,0,(char *)0x0,1)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "local_58[uVar15] = local_b0;" (assignment_expression "local_58[uVar15] = local_b0" (subscript_expression "local_58[uVar15]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_58[uVar9] = 0;" (assignment_expression "local_58[uVar9] = 0" (subscript_expression "local_58[uVar9]" identifier [ identifier ]) = number_literal) ;) (expression_statement "local_50 = uVar9;" (assignment_expression "local_50 = uVar9" identifier = identifier) ;) (expression_statement "cVar5 = __verify_grouping(*(char **)(lVar20 + 0x10),*(ulong *)(lVar20 + 0x18),\n                              (string *)&local_58);" (assignment_expression "cVar5 = __verify_grouping(*(char **)(lVar20 + 0x10),*(ulong *)(lVar20 + 0x18),\n                              (string *)&local_58)" identifier = (call_expression "__verify_grouping(*(char **)(lVar20 + 0x10),*(ulong *)(lVar20 + 0x18),\n                              (string *)&local_58)" identifier (argument_list "(*(char **)(lVar20 + 0x10),*(ulong *)(lVar20 + 0x18),\n                              (string *)&local_58)" ( (pointer_expression "*(char **)(lVar20 + 0x10)" * (cast_expression "(char **)(lVar20 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar20 + 0x10)" ( (binary_expression "lVar20 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(ulong *)(lVar20 + 0x18)" * (cast_expression "(ulong *)(lVar20 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x18)" ( (binary_expression "lVar20 + 0x18" identifier + number_literal) )))) , (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) )))) ;) (if_statement "if (cVar5 == '\0') {\n      *param_7 = 4;\n    }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_7 = 4;\n    }" { (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" * identifier) = number_literal) ;) })) (if_statement "if (((iVar8 != 0) || (bVar17)) || (local_50 != 0)) goto LAB_00348a5d;" if (parenthesized_expression "(((iVar8 != 0) || (bVar17)) || (local_50 != 0))" ( (binary_expression "((iVar8 != 0) || (bVar17)) || (local_50 != 0)" (parenthesized_expression "((iVar8 != 0) || (bVar17))" ( (binary_expression "(iVar8 != 0) || (bVar17)" (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) || (parenthesized_expression "(bVar17)" ( identifier ))) )) || (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_00348a5d;" goto statement_identifier ;)) })))) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" * identifier) = number_literal) ;) (labeled_statement "LAB_0034881d:\n  if (bVar19 != 0) {\n    *param_7 = *param_7 | 2;\n  }" statement_identifier : (if_statement "if (bVar19 != 0) {\n    *param_7 = *param_7 | 2;\n  }" if (parenthesized_expression "(bVar19 != 0)" ( (binary_expression "bVar19 != 0" identifier != number_literal) )) (compound_statement "{\n    *param_7 = *param_7 | 2;\n  }" { (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 2" (pointer_expression "*param_7" * identifier) | number_literal)) ;) }))) (if_statement "if (local_58 != &local_48) {\n    operator_delete(local_58);\n  }" if (parenthesized_expression "(local_58 != &local_48)" ( (binary_expression "local_58 != &local_48" identifier != (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n    operator_delete(local_58);\n  }" { (expression_statement "operator_delete(local_58);" (call_expression "operator_delete(local_58)" identifier (argument_list "(local_58)" ( identifier ))) ;) })) (expression_statement "auVar24._8_8_ = param_3 & 0xffffffff00000000 | local_b8;" (assignment_expression "auVar24._8_8_ = param_3 & 0xffffffff00000000 | local_b8" (field_expression "auVar24._8_8_" identifier . field_identifier) = (binary_expression "param_3 & 0xffffffff00000000 | local_b8" (binary_expression "param_3 & 0xffffffff00000000" identifier & number_literal) | identifier)) ;) (expression_statement "auVar24._0_8_ = param_2;" (assignment_expression "auVar24._0_8_ = param_2" (field_expression "auVar24._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar24;" return identifier ;) (labeled_statement "code_r0x00348c77:\n  local_b8 = 0xffffffff;" statement_identifier : (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "bVar19 = bVar3;" (assignment_expression "bVar19 = bVar3" identifier = identifier) ;) (expression_statement "uVar15 = local_50;" (assignment_expression "uVar15 = local_50" identifier = identifier) ;) (goto_statement "goto joined_r0x003487e4;" goto statement_identifier ;) (labeled_statement "LAB_003487c9:\n  local_b8 = 0xffffffff;" statement_identifier : (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "bVar19 = 1;" (assignment_expression "bVar19 = 1" identifier = number_literal) ;) (expression_statement "uVar15 = local_50;" (assignment_expression "uVar15 = local_50" identifier = identifier) ;) (goto_statement "goto joined_r0x003487e4;" goto statement_identifier ;) (labeled_statement "LAB_003489c8:\n  bVar19 = 0;" statement_identifier : (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;)) (expression_statement "uVar15 = local_50;" (assignment_expression "uVar15 = local_50" identifier = identifier) ;) (goto_statement "goto joined_r0x003487e4;" goto statement_identifier ;) }))
(translation_unit "undefined1  [16]\nFUN_00348410(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,long param_6,\n            uint *param_7,ulong *param_8)\n\n{\n  ulong uVar1;\n  long *plVar2;\n  byte bVar3;\n  bool bVar4;\n  char cVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  long lVar9;\n  ulong uVar10;\n  void *pvVar11;\n  undefined8 *puVar12;\n  ulong uVar13;\n  uint uVar14;\n  uint uVar15;\n  char cVar16;\n  ulong uVar17;\n  ulong uVar18;\n  bool bVar19;\n  uint uVar20;\n  byte bVar21;\n  long lVar22;\n  bool bVar23;\n  bool bVar24;\n  bool bVar25;\n  undefined1 auVar26 [16];\n  long *local_c0;\n  ulong local_b8;\n  undefined1 local_b0;\n  ulong local_a8;\n  ulong local_a0;\n  bool local_6b;\n  byte local_6a;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48;\n  undefined7 uStack_47;\n  \n  local_b8 = param_3 & 0xffffffff;\n  lVar9 = FUN_002dd3b0(&DAT_0044bd90);\n  plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8);\n  lVar22 = *plVar2;\n  if (lVar22 == 0) {\n                    \n    puVar12 = (undefined8 *)FUN_002d94a0(0x90);\n    *(undefined4 *)(puVar12 + 1) = 0;\n    *(undefined1 *)(puVar12 + 4) = 0;\n    puVar12[2] = 0;\n    *puVar12 = &PTR_FUN_00439298;\n    puVar12[3] = 0;\n    puVar12[5] = 0;\n    puVar12[6] = 0;\n    puVar12[7] = 0;\n    puVar12[8] = 0;\n    *(undefined2 *)(puVar12 + 9) = 0;\n    *(undefined1 *)(puVar12 + 0x11) = 0;\n                    \n    FUN_002ece10(puVar12,param_6 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9);\n    lVar22 = *plVar2;\n  }\n  uVar15 = *(uint *)(param_6 + 0x18);\n  uVar14 = uVar15 & 0x4a;\n  iVar6 = 8;\n  if (uVar14 != 0x40) {\n    iVar6 = 0x10;\n    if (uVar14 != 8) {\n      iVar6 = 10;\n    }\n  }\n  bVar24 = (uint)param_3 == 0xffffffff;\n  bVar23 = param_2 != (long *)0x0 && bVar24;\n  bVar19 = bVar24;\n  if (bVar23) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar19 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }\n  }\n  uVar15 = uVar15 & 0x4a;\n  bVar25 = param_5 == -1;\n  bVar4 = param_4 != (long *)0x0 && bVar25;\n  local_c0 = param_4;\n  bVar23 = bVar25;\n  if (bVar4) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar23 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }\n  }\n  if (bVar23 == bVar19) {\n    cVar5 = *(char *)(lVar22 + 0x20);\n    bVar23 = false;\n    uVar14 = 0;\n    bVar19 = false;\n    local_6b = true;\n    iVar8 = 0;\n  }\n  else {\n    if ((param_2 == (long *)0x0) || (!bVar24)) {\n      uVar14 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar22 + 0x20);\n    cVar16 = (char)uVar14;\n    bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;\n    if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar23 = false;\n    }\n    bVar19 = false;\n    iVar8 = 0;\n    do {\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    } while (bVar19);\n    local_b8 = (ulong)uVar20;\n    local_6b = false;\n  }\nLAB_00348669:\n  local_a0 = 0x16;\n  if (iVar6 != 0x10) {\nLAB_00348678:\n    local_a0 = (ulong)iVar6;\n  }\n  bVar21 = local_6b;\n  local_48 = 0;\n  local_58 = &local_48;\n  local_50 = 0;\n  if (cVar5 != '\0') {\n    FUN_002e1e10(&local_58,0x20);\n  }\n  uVar18 = (ulong)iVar6;\n  bVar3 = *(byte *)(lVar22 + 0x88);\n  uVar10 = 0x7fffffffffffffff;\n  if (bVar23) {\n    uVar10 = 0x8000000000000000;\n  }\n  uVar17 = local_50;\n  if (bVar3 == 0) {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_6a = 0;\n    local_6b = false;\n    local_a8 = 0;\n  }\n  else {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }\njoined_r0x003487e4:\n  if (uVar17 == 0) {\n    local_50 = 0;\n    if ((bVar19) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }\n  else {\n    local_b0 = (undefined1)iVar8;\n    uVar10 = uVar17 + 1;\n    if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }\n    local_58[uVar17] = local_b0;\n    local_58[uVar10] = 0;\n    local_50 = uVar10;\n    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;\n  }\n  *param_8 = 0;\n  *param_7 = 4;\nLAB_0034881d:\n  if (bVar21 != 0) {\n    *param_7 = *param_7 | 2;\n  }\n  if (local_58 != &local_48) {\n    FUN_002dac70();\n  }\n  auVar26._8_8_ = param_3 & 0xffffffff00000000 | local_b8;\n  auVar26._0_8_ = param_2;\n  return auVar26;\ncode_r0x00348c77:\n  local_b8 = 0xffffffff;\n  bVar21 = bVar3;\n  uVar17 = local_50;\n  goto joined_r0x003487e4;\nLAB_003487c9:\n  local_b8 = 0xffffffff;\n  bVar21 = 1;\n  uVar17 = local_50;\n  goto joined_r0x003487e4;\nLAB_003489c8:\n  bVar21 = 0;\n  uVar17 = local_50;\n  goto joined_r0x003487e4;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_00348410(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,long param_6,\n            uint *param_7,ulong *param_8)\n\n{\n  ulong uVar1;" (macro_type_specifier "FUN_00348410(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) (pointer_declarator "*param_4" * identifier) , (ERROR "int" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "uint" identifier) (pointer_declarator "*param_7" * identifier) , (ERROR "ulong *param_8)\n\n{\n  ulong" identifier (pointer_declarator "*param_8" * identifier) ) { identifier) identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "void *pvVar11;" primitive_type (pointer_declarator "*pvVar11" * identifier) ;) (declaration "undefined8 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "char cVar16;" primitive_type identifier ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "ulong uVar18;" type_identifier identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "byte bVar21;" type_identifier identifier ;) (declaration "long lVar22;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "bool bVar24;" primitive_type identifier ;) (declaration "bool bVar25;" primitive_type identifier ;) (declaration "undefined1 auVar26 [16];" type_identifier (array_declarator "auVar26 [16]" identifier [ number_literal ]) ;) (declaration "long *local_c0;" (sized_type_specifier "long" long) (pointer_declarator "*local_c0" * identifier) ;) (declaration "ulong local_b8;" type_identifier identifier ;) (declaration "undefined1 local_b0;" type_identifier identifier ;) (declaration "ulong local_a8;" type_identifier identifier ;) (declaration "ulong local_a0;" type_identifier identifier ;) (declaration "bool local_6b;" primitive_type identifier ;) (declaration "byte local_6a;" type_identifier identifier ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "undefined1 local_48;" type_identifier identifier ;) (declaration "undefined7 uStack_47;" type_identifier identifier ;) (expression_statement "local_b8 = param_3 & 0xffffffff;" (assignment_expression "local_b8 = param_3 & 0xffffffff" identifier = (binary_expression "param_3 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "lVar9 = FUN_002dd3b0(&DAT_0044bd90);" (assignment_expression "lVar9 = FUN_002dd3b0(&DAT_0044bd90)" identifier = (call_expression "FUN_002dd3b0(&DAT_0044bd90)" identifier (argument_list "(&DAT_0044bd90)" ( (pointer_expression "&DAT_0044bd90" & identifier) )))) ;) (expression_statement "plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8);" (assignment_expression "plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8)" ( (binary_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8" (pointer_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18)" * (cast_expression "(long *)(*(long *)(param_6 + 0xd0) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_6 + 0xd0) + 0x18)" ( (binary_expression "*(long *)(param_6 + 0xd0) + 0x18" (pointer_expression "*(long *)(param_6 + 0xd0)" * (cast_expression "(long *)(param_6 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "lVar9 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar22 = *plVar2;" (assignment_expression "lVar22 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) (if_statement "if (lVar22 == 0) {\n                    \n    puVar12 = (undefined8 *)FUN_002d94a0(0x90);\n    *(undefined4 *)(puVar12 + 1) = 0;\n    *(undefined1 *)(puVar12 + 4) = 0;\n    puVar12[2] = 0;\n    *puVar12 = &PTR_FUN_00439298;\n    puVar12[3] = 0;\n    puVar12[5] = 0;\n    puVar12[6] = 0;\n    puVar12[7] = 0;\n    puVar12[8] = 0;\n    *(undefined2 *)(puVar12 + 9) = 0;\n    *(undefined1 *)(puVar12 + 0x11) = 0;\n                    \n    FUN_002ece10(puVar12,param_6 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9);\n    lVar22 = *plVar2;\n  }" if (parenthesized_expression "(lVar22 == 0)" ( (binary_expression "lVar22 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    puVar12 = (undefined8 *)FUN_002d94a0(0x90);\n    *(undefined4 *)(puVar12 + 1) = 0;\n    *(undefined1 *)(puVar12 + 4) = 0;\n    puVar12[2] = 0;\n    *puVar12 = &PTR_FUN_00439298;\n    puVar12[3] = 0;\n    puVar12[5] = 0;\n    puVar12[6] = 0;\n    puVar12[7] = 0;\n    puVar12[8] = 0;\n    *(undefined2 *)(puVar12 + 9) = 0;\n    *(undefined1 *)(puVar12 + 0x11) = 0;\n                    \n    FUN_002ece10(puVar12,param_6 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9);\n    lVar22 = *plVar2;\n  }" { (expression_statement "puVar12 = (undefined8 *)FUN_002d94a0(0x90);" (assignment_expression "puVar12 = (undefined8 *)FUN_002d94a0(0x90)" identifier = (cast_expression "(undefined8 *)FUN_002d94a0(0x90)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(0x90)" identifier (argument_list "(0x90)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar12 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar12 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar12 + 1)" * (cast_expression "(undefined4 *)(puVar12 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 1)" ( (binary_expression "puVar12 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar12 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar12 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar12 + 4)" * (cast_expression "(undefined1 *)(puVar12 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 4)" ( (binary_expression "puVar12 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar12[2] = 0;" (assignment_expression "puVar12[2] = 0" (subscript_expression "puVar12[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar12 = &PTR_FUN_00439298;" (assignment_expression "*puVar12 = &PTR_FUN_00439298" (pointer_expression "*puVar12" * identifier) = (pointer_expression "&PTR_FUN_00439298" & identifier)) ;) (expression_statement "puVar12[3] = 0;" (assignment_expression "puVar12[3] = 0" (subscript_expression "puVar12[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar12[5] = 0;" (assignment_expression "puVar12[5] = 0" (subscript_expression "puVar12[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar12[6] = 0;" (assignment_expression "puVar12[6] = 0" (subscript_expression "puVar12[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar12[7] = 0;" (assignment_expression "puVar12[7] = 0" (subscript_expression "puVar12[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar12[8] = 0;" (assignment_expression "puVar12[8] = 0" (subscript_expression "puVar12[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar12 + 9) = 0;" (assignment_expression "*(undefined2 *)(puVar12 + 9) = 0" (pointer_expression "*(undefined2 *)(puVar12 + 9)" * (cast_expression "(undefined2 *)(puVar12 + 9)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 9)" ( (binary_expression "puVar12 + 9" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar12 + 0x11) = 0;" (assignment_expression "*(undefined1 *)(puVar12 + 0x11) = 0" (pointer_expression "*(undefined1 *)(puVar12 + 0x11)" * (cast_expression "(undefined1 *)(puVar12 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x11)" ( (binary_expression "puVar12 + 0x11" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002ece10(puVar12,param_6 + 0xd0);" (call_expression "FUN_002ece10(puVar12,param_6 + 0xd0)" identifier (argument_list "(puVar12,param_6 + 0xd0)" ( identifier , (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9);" (call_expression "FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9)" identifier (argument_list "(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9)" ( (pointer_expression "*(undefined8 *)(param_6 + 0xd0)" * (cast_expression "(undefined8 *)(param_6 + 0xd0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "lVar22 = *plVar2;" (assignment_expression "lVar22 = *plVar2" identifier = (pointer_expression "*plVar2" * identifier)) ;) })) (expression_statement "uVar15 = *(uint *)(param_6 + 0x18);" (assignment_expression "uVar15 = *(uint *)(param_6 + 0x18)" identifier = (pointer_expression "*(uint *)(param_6 + 0x18)" * (cast_expression "(uint *)(param_6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0x18)" ( (binary_expression "param_6 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = uVar15 & 0x4a;" (assignment_expression "uVar14 = uVar15 & 0x4a" identifier = (binary_expression "uVar15 & 0x4a" identifier & number_literal)) ;) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (if_statement "if (uVar14 != 0x40) {\n    iVar6 = 0x10;\n    if (uVar14 != 8) {\n      iVar6 = 10;\n    }\n  }" if (parenthesized_expression "(uVar14 != 0x40)" ( (binary_expression "uVar14 != 0x40" identifier != number_literal) )) (compound_statement "{\n    iVar6 = 0x10;\n    if (uVar14 != 8) {\n      iVar6 = 10;\n    }\n  }" { (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" identifier = number_literal) ;) (if_statement "if (uVar14 != 8) {\n      iVar6 = 10;\n    }" if (parenthesized_expression "(uVar14 != 8)" ( (binary_expression "uVar14 != 8" identifier != number_literal) )) (compound_statement "{\n      iVar6 = 10;\n    }" { (expression_statement "iVar6 = 10;" (assignment_expression "iVar6 = 10" identifier = number_literal) ;) })) })) (expression_statement "bVar24 = (uint)param_3 == 0xffffffff;" (assignment_expression "bVar24 = (uint)param_3 == 0xffffffff" identifier = (binary_expression "(uint)param_3 == 0xffffffff" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) == number_literal)) ;) (expression_statement "bVar23 = param_2 != (long *)0x0 && bVar24;" (assignment_expression "bVar23 = param_2 != (long *)0x0 && bVar24" identifier = (binary_expression "param_2 != (long *)0x0 && bVar24" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar19 = bVar24;" (assignment_expression "bVar19 = bVar24" identifier = identifier) ;) (if_statement "if (bVar23) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar19 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }\n  }" if (parenthesized_expression "(bVar23)" ( identifier )) (compound_statement "{\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar19 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }\n  }" { (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar19 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      bVar19 = false;\n    }" { (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) }) (else_clause "else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }" else (compound_statement "{\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }" { (expression_statement "iVar8 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar8 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar8 != -1) {\n        plVar2 = param_2;\n      }" if (parenthesized_expression "(iVar8 != -1)" ( (binary_expression "iVar8 != -1" identifier != number_literal) )) (compound_statement "{\n        plVar2 = param_2;\n      }" { (expression_statement "plVar2 = param_2;" (assignment_expression "plVar2 = param_2" identifier = identifier) ;) })) (expression_statement "param_2 = plVar2;" (assignment_expression "param_2 = plVar2" identifier = identifier) ;) (expression_statement "bVar19 = iVar8 == -1 && bVar23;" (assignment_expression "bVar19 = iVar8 == -1 && bVar23" identifier = (binary_expression "iVar8 == -1 && bVar23" (binary_expression "iVar8 == -1" identifier == number_literal) && identifier)) ;) }))) })) (expression_statement "uVar15 = uVar15 & 0x4a;" (assignment_expression "uVar15 = uVar15 & 0x4a" identifier = (binary_expression "uVar15 & 0x4a" identifier & number_literal)) ;) (expression_statement "bVar25 = param_5 == -1;" (assignment_expression "bVar25 = param_5 == -1" identifier = (binary_expression "param_5 == -1" identifier == number_literal)) ;) (expression_statement "bVar4 = param_4 != (long *)0x0 && bVar25;" (assignment_expression "bVar4 = param_4 != (long *)0x0 && bVar25" identifier = (binary_expression "param_4 != (long *)0x0 && bVar25" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "local_c0 = param_4;" (assignment_expression "local_c0 = param_4" identifier = identifier) ;) (expression_statement "bVar23 = bVar25;" (assignment_expression "bVar23 = bVar25" identifier = identifier) ;) (if_statement "if (bVar4) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar23 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }\n  }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar23 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }\n  }" { (if_statement "if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar23 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }" if (parenthesized_expression "((ulong)param_4[2] < (ulong)param_4[3])" ( (binary_expression "(ulong)param_4[2] < (ulong)param_4[3]" (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      bVar23 = false;\n    }" { (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" identifier = false) ;) }) (else_clause "else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }" else (compound_statement "{\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }" { (expression_statement "iVar8 = (**(code **)(*param_4 + 0x48))(param_4);" (assignment_expression "iVar8 = (**(code **)(*param_4 + 0x48))(param_4)" identifier = (call_expression "(**(code **)(*param_4 + 0x48))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" ( (pointer_expression "**(code **)(*param_4 + 0x48)" * (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "local_c0 = (long *)0x0;" (assignment_expression "local_c0 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar8 != -1) {\n        local_c0 = param_4;\n      }" if (parenthesized_expression "(iVar8 != -1)" ( (binary_expression "iVar8 != -1" identifier != number_literal) )) (compound_statement "{\n        local_c0 = param_4;\n      }" { (expression_statement "local_c0 = param_4;" (assignment_expression "local_c0 = param_4" identifier = identifier) ;) })) (expression_statement "bVar23 = iVar8 == -1 && bVar4;" (assignment_expression "bVar23 = iVar8 == -1 && bVar4" identifier = (binary_expression "iVar8 == -1 && bVar4" (binary_expression "iVar8 == -1" identifier == number_literal) && identifier)) ;) }))) })) (if_statement "if (bVar23 == bVar19) {\n    cVar5 = *(char *)(lVar22 + 0x20);\n    bVar23 = false;\n    uVar14 = 0;\n    bVar19 = false;\n    local_6b = true;\n    iVar8 = 0;\n  }\n  else {\n    if ((param_2 == (long *)0x0) || (!bVar24)) {\n      uVar14 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar22 + 0x20);\n    cVar16 = (char)uVar14;\n    bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;\n    if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar23 = false;\n    }\n    bVar19 = false;\n    iVar8 = 0;\n    do {\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    } while (bVar19);\n    local_b8 = (ulong)uVar20;\n    local_6b = false;\n  }" if (parenthesized_expression "(bVar23 == bVar19)" ( (binary_expression "bVar23 == bVar19" identifier == identifier) )) (compound_statement "{\n    cVar5 = *(char *)(lVar22 + 0x20);\n    bVar23 = false;\n    uVar14 = 0;\n    bVar19 = false;\n    local_6b = true;\n    iVar8 = 0;\n  }" { (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" identifier = (pointer_expression "*(char *)(lVar22 + 0x20)" * (cast_expression "(char *)(lVar22 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" identifier = false) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "local_6b = true;" (assignment_expression "local_6b = true" identifier = true) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if ((param_2 == (long *)0x0) || (!bVar24)) {\n      uVar14 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar22 + 0x20);\n    cVar16 = (char)uVar14;\n    bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;\n    if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar23 = false;\n    }\n    bVar19 = false;\n    iVar8 = 0;\n    do {\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    } while (bVar19);\n    local_b8 = (ulong)uVar20;\n    local_6b = false;\n  }" else (compound_statement "{\n    if ((param_2 == (long *)0x0) || (!bVar24)) {\n      uVar14 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar22 + 0x20);\n    cVar16 = (char)uVar14;\n    bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;\n    if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar23 = false;\n    }\n    bVar19 = false;\n    iVar8 = 0;\n    do {\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    } while (bVar19);\n    local_b8 = (ulong)uVar20;\n    local_6b = false;\n  }" { (if_statement "if ((param_2 == (long *)0x0) || (!bVar24)) {\n      uVar14 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" if (parenthesized_expression "((param_2 == (long *)0x0) || (!bVar24))" ( (binary_expression "(param_2 == (long *)0x0) || (!bVar24)" (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(!bVar24)" ( (unary_expression "!bVar24" ! identifier) ))) )) (compound_statement "{\n      uVar14 = (uint)param_3 & 0xff;\n    }" { (expression_statement "uVar14 = (uint)param_3 & 0xff;" (assignment_expression "uVar14 = (uint)param_3 & 0xff" identifier = (binary_expression "(uint)param_3 & 0xff" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) }) (else_clause "else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" else (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      uVar14 = (uint)*(byte *)param_2[2];\n    }" { (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" else (compound_statement "{\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" { (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }" if (parenthesized_expression "(uVar14 == 0xffffffff)" ( (binary_expression "uVar14 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) })) }))))) (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" identifier = (pointer_expression "*(char *)(lVar22 + 0x20)" * (cast_expression "(char *)(lVar22 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "cVar16 = (char)uVar14;" (assignment_expression "cVar16 = (char)uVar14" identifier = (cast_expression "(char)uVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;" (assignment_expression "bVar23 = *(char *)(lVar22 + 0x6e) == cVar16" identifier = (binary_expression "*(char *)(lVar22 + 0x6e) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x6e)" * (cast_expression "(char *)(lVar22 + 0x6e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x6e)" ( (binary_expression "lVar22 + 0x6e" identifier + number_literal) )))) == identifier)) ;) (if_statement "if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar23 = false;\n    }" if (parenthesized_expression "((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16))" ( (binary_expression "(bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)" (parenthesized_expression "(bVar23)" ( identifier )) || (parenthesized_expression "(*(char *)(lVar22 + 0x6f) == cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x6f) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x6f)" * (cast_expression "(char *)(lVar22 + 0x6f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x6f)" ( (binary_expression "lVar22 + 0x6f" identifier + number_literal) )))) == identifier) ))) )) (compound_statement "{\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }" { (if_statement "if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }" if (parenthesized_expression "(((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16))" ( (binary_expression "((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)" (parenthesized_expression "((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16))" ( (binary_expression "(cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)" (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(char *)(lVar22 + 0x49) != cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x49) != cVar16" (pointer_expression "*(char *)(lVar22 + 0x49)" * (cast_expression "(char *)(lVar22 + 0x49)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x49)" ( (binary_expression "lVar22 + 0x49" identifier + number_literal) )))) != identifier) ))) )) && (parenthesized_expression "(*(char *)(lVar22 + 0x48) != cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x48) != cVar16" (pointer_expression "*(char *)(lVar22 + 0x48)" * (cast_expression "(char *)(lVar22 + 0x48)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x48)" ( (binary_expression "lVar22 + 0x48" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }" { (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          param_2[2] = param_2[2] + 1;\n        }" { (expression_statement "param_2[2] = param_2[2] + 1;" (assignment_expression "param_2[2] = param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" else (compound_statement "{\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" { (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;) }))) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }" { (expression_statement "iVar8 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar8 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "bVar19 = iVar8 == -1;" (assignment_expression "bVar19 = iVar8 == -1" identifier = (binary_expression "iVar8 == -1" identifier == number_literal)) ;) (if_statement "if (bVar19) {\n            param_2 = (long *)0x0;\n          }" if (parenthesized_expression "(bVar19)" ( identifier )) (compound_statement "{\n            param_2 = (long *)0x0;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) })) (expression_statement "bVar4 = local_c0 != (long *)0x0 && bVar25;" (assignment_expression "bVar4 = local_c0 != (long *)0x0 && bVar25" identifier = (binary_expression "local_c0 != (long *)0x0 && bVar25" (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar24 = bVar25;" (assignment_expression "bVar24 = bVar25" identifier = identifier) ;) (if_statement "if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }" { (if_statement "if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }" if (parenthesized_expression "((ulong)local_c0[2] < (ulong)local_c0[3])" ( (binary_expression "(ulong)local_c0[2] < (ulong)local_c0[3]" (cast_expression "(ulong)local_c0[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_c0[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[3]" identifier [ number_literal ]))) )) (compound_statement "{\n            bVar24 = false;\n          }" { (expression_statement "bVar24 = false;" (assignment_expression "bVar24 = false" identifier = false) ;) }) (else_clause "else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }" else (compound_statement "{\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }" { (expression_statement "iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0)" identifier = (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" ( (pointer_expression "**(code **)(*local_c0 + 0x48)" * (pointer_expression "*(code **)(*local_c0 + 0x48)" * (cast_expression "(code **)(*local_c0 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_c0 + 0x48)" ( (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" * identifier) + number_literal) ))))) )) (argument_list "(local_c0)" ( identifier )))) ;) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }" if (parenthesized_expression "(iVar8 != -1)" ( (binary_expression "iVar8 != -1" identifier != number_literal) )) (compound_statement "{\n              plVar2 = local_c0;\n            }" { (expression_statement "plVar2 = local_c0;" (assignment_expression "plVar2 = local_c0" identifier = identifier) ;) })) (expression_statement "local_c0 = plVar2;" (assignment_expression "local_c0 = plVar2" identifier = identifier) ;) (expression_statement "bVar24 = iVar8 == -1 && bVar4;" (assignment_expression "bVar24 = iVar8 == -1 && bVar4" identifier = (binary_expression "iVar8 == -1 && bVar4" (binary_expression "iVar8 == -1" identifier == number_literal) && identifier)) ;) }))) })) (if_statement "if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }" if (parenthesized_expression "(bVar24 == bVar19)" ( (binary_expression "bVar24 == bVar19" identifier == identifier) )) (compound_statement "{\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }" { (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" identifier = (pointer_expression "*(char *)(lVar22 + 0x20)" * (cast_expression "(char *)(lVar22 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_6b = true;" (assignment_expression "local_6b = true" identifier = true) ;) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00348669;" goto statement_identifier ;) })) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }" if (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }" { (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n            uVar14 = (uint)*(byte *)param_2[2];\n          }" { (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }" else (compound_statement "{\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }" { (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }" if (parenthesized_expression "(uVar14 == 0xffffffff)" ( (binary_expression "uVar14 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) })) }))) })) (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" identifier = (pointer_expression "*(char *)(lVar22 + 0x20)" * (cast_expression "(char *)(lVar22 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) })) }) (else_clause "else {\n      bVar23 = false;\n    }" else (compound_statement "{\n      bVar23 = false;\n    }" { (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" identifier = false) ;) }))) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    } while (bVar19);" do (compound_statement "{\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    }" { (expression_statement "uVar20 = (uint)local_b8;" (assignment_expression "uVar20 = (uint)local_b8" identifier = (cast_expression "(uint)local_b8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "cVar16 = (char)uVar14;" (assignment_expression "cVar16 = (char)uVar14" identifier = (cast_expression "(char)uVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;" if (parenthesized_expression "(((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16))" ( (binary_expression "((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)" (parenthesized_expression "((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16))" ( (binary_expression "(cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)" (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(lVar22 + 0x49) == cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x49) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x49)" * (cast_expression "(char *)(lVar22 + 0x49)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x49)" ( (binary_expression "lVar22 + 0x49" identifier + number_literal) )))) == identifier) ))) )) || (parenthesized_expression "(*(char *)(lVar22 + 0x48) == cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x48) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x48)" * (cast_expression "(char *)(lVar22 + 0x48)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x48)" ( (binary_expression "lVar22 + 0x48" identifier + number_literal) )))) == identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "bVar24 = bVar25;" (assignment_expression "bVar24 = bVar25" identifier = identifier) ;) (if_statement "if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }" if (parenthesized_expression "(*(char *)(lVar22 + 0x72) == cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x72) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x72)" * (cast_expression "(char *)(lVar22 + 0x72)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x72)" ( (binary_expression "lVar22 + 0x72" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }" { (expression_statement "bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);" (assignment_expression "bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U)" identifier = (cast_expression "(bool)(iVar6 == 10 | bVar19 ^ 1U)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(iVar6 == 10 | bVar19 ^ 1U)" ( (binary_expression "iVar6 == 10 | bVar19 ^ 1U" (binary_expression "iVar6 == 10" identifier == number_literal) | (binary_expression "bVar19 ^ 1U" identifier ^ number_literal)) )))) ;) (if_statement "if (!bVar4) goto LAB_003485d9;" if (parenthesized_expression "(!bVar4)" ( (unary_expression "!bVar4" ! identifier) )) (goto_statement "goto LAB_003485d9;" goto statement_identifier ;)) (expression_statement "bVar19 = iVar6 == 8 || uVar15 == 0;" (assignment_expression "bVar19 = iVar6 == 8 || uVar15 == 0" identifier = (binary_expression "iVar6 == 8 || uVar15 == 0" (binary_expression "iVar6 == 8" identifier == number_literal) || (binary_expression "uVar15 == 0" identifier == number_literal))) ;) (if_statement "if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }" if (parenthesized_expression "(iVar6 != 8 && uVar15 != 0)" ( (binary_expression "iVar6 != 8 && uVar15 != 0" (binary_expression "iVar6 != 8" identifier != number_literal) && (binary_expression "uVar15 != 0" identifier != number_literal)) )) (compound_statement "{\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "bVar19 = bVar4;" (assignment_expression "bVar19 = bVar4" identifier = identifier) ;) (goto_statement "goto LAB_0034860e;" goto statement_identifier ;) })) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (expression_statement "uVar10 = param_2[2];" (assignment_expression "uVar10 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (if_statement "if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;" if (parenthesized_expression "((ulong)param_2[3] <= uVar10)" ( (binary_expression "(ulong)param_2[3] <= uVar10" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_003488c0;" goto statement_identifier ;)) (labeled_statement "LAB_0034861c:\n        param_2[2] = uVar10 + 1;" statement_identifier : (expression_statement "param_2[2] = uVar10 + 1;" (assignment_expression "param_2[2] = uVar10 + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_003488f8;" goto statement_identifier ;)) (labeled_statement "LAB_00348635:\n        bVar4 = false;" statement_identifier : (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;)) (if_statement "if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;" if (parenthesized_expression "(local_c0 != (long *)0x0 && bVar25)" ( (binary_expression "local_c0 != (long *)0x0 && bVar25" (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) (goto_statement "goto LAB_00348940;" goto statement_identifier ;)) (labeled_statement "LAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }" statement_identifier : (if_statement "if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }" if (parenthesized_expression "(bVar24 == bVar4)" ( (binary_expression "bVar24 == bVar4" identifier == identifier) )) (compound_statement "{\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }" { (labeled_statement "LAB_0034864f:\n          local_b8 = 0xffffffff;" statement_identifier : (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" identifier = (pointer_expression "*(char *)(lVar22 + 0x20)" * (cast_expression "(char *)(lVar22 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_6b = true;" (assignment_expression "local_6b = true" identifier = true) ;) (goto_statement "goto LAB_00348669;" goto statement_identifier ;) }))) }) (else_clause "else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }" else (compound_statement "{\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }" { (if_statement "if (!bVar19) break;" if (parenthesized_expression "(!bVar19)" ( (unary_expression "!bVar19" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }" statement_identifier : (if_statement "if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }" if (parenthesized_expression "((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16))" ( (binary_expression "(*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)" (parenthesized_expression "(*(char *)(lVar22 + 0x70) != cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x70) != cVar16" (pointer_expression "*(char *)(lVar22 + 0x70)" * (cast_expression "(char *)(lVar22 + 0x70)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x70)" ( (binary_expression "lVar22 + 0x70" identifier + number_literal) )))) != identifier) )) && (parenthesized_expression "(*(char *)(lVar22 + 0x71) != cVar16)" ( (binary_expression "*(char *)(lVar22 + 0x71) != cVar16" (pointer_expression "*(char *)(lVar22 + 0x71)" * (cast_expression "(char *)(lVar22 + 0x71)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x71)" ( (binary_expression "lVar22 + 0x71" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }" { (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" identifier = true) ;) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" identifier = false) ;) (goto_statement "goto LAB_00348669;" goto statement_identifier ;) }))) (expression_statement "local_6b = iVar6 == 0x10 || uVar15 == 0;" (assignment_expression "local_6b = iVar6 == 0x10 || uVar15 == 0" identifier = (binary_expression "iVar6 == 0x10 || uVar15 == 0" (binary_expression "iVar6 == 0x10" identifier == number_literal) || (binary_expression "uVar15 == 0" identifier == number_literal))) ;) (if_statement "if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }" if (parenthesized_expression "(iVar6 != 0x10 && uVar15 != 0)" ( (binary_expression "iVar6 != 0x10 && uVar15 != 0" (binary_expression "iVar6 != 0x10" identifier != number_literal) && (binary_expression "uVar15 != 0" identifier != number_literal)) )) (compound_statement "{\n          bVar19 = true;\n          goto LAB_00348678;\n        }" { (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" identifier = true) ;) (goto_statement "goto LAB_00348678;" goto statement_identifier ;) })) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" identifier = number_literal) ;) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (labeled_statement "LAB_0034860e:\n        uVar10 = param_2[2];" statement_identifier : (expression_statement "uVar10 = param_2[2];" (assignment_expression "uVar10 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;)) (if_statement "if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;" if (parenthesized_expression "(uVar10 < (ulong)param_2[3])" ( (binary_expression "uVar10 < (ulong)param_2[3]" identifier < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0034861c;" goto statement_identifier ;)) (labeled_statement "LAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);" statement_identifier : (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;)) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348635;" goto statement_identifier ;)) (labeled_statement "LAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);" statement_identifier : (expression_statement "iVar7 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar7 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;)) (expression_statement "bVar4 = iVar7 == -1;" (assignment_expression "bVar4 = iVar7 == -1" identifier = (binary_expression "iVar7 == -1" identifier == number_literal)) ;) (if_statement "if (bVar4) {\n          param_2 = (long *)0x0;\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          param_2 = (long *)0x0;\n        }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;" if (parenthesized_expression "(local_c0 == (long *)0x0 || !bVar25)" ( (binary_expression "local_c0 == (long *)0x0 || !bVar25" (binary_expression "local_c0 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar25" ! identifier)) )) (goto_statement "goto LAB_00348646;" goto statement_identifier ;)) (labeled_statement "LAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;" statement_identifier : (expression_statement "bVar24 = local_c0 != (long *)0x0;" (assignment_expression "bVar24 = local_c0 != (long *)0x0" identifier = (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ;)) (if_statement "if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }" if (parenthesized_expression "((ulong)local_c0[3] <= (ulong)local_c0[2])" ( (binary_expression "(ulong)local_c0[3] <= (ulong)local_c0[2]" (cast_expression "(ulong)local_c0[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_c0[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[2]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }" { (expression_statement "iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0)" identifier = (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" ( (pointer_expression "**(code **)(*local_c0 + 0x48)" * (pointer_expression "*(code **)(*local_c0 + 0x48)" * (cast_expression "(code **)(*local_c0 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_c0 + 0x48)" ( (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" * identifier) + number_literal) ))))) )) (argument_list "(local_c0)" ( identifier )))) ;) (if_statement "if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (compound_statement "{\n            local_c0 = (long *)0x0;\n          }" { (expression_statement "local_c0 = (long *)0x0;" (assignment_expression "local_c0 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "bVar24 = iVar7 == -1 && (bVar24 && bVar25);" (assignment_expression "bVar24 = iVar7 == -1 && (bVar24 && bVar25)" identifier = (binary_expression "iVar7 == -1 && (bVar24 && bVar25)" (binary_expression "iVar7 == -1" identifier == number_literal) && (parenthesized_expression "(bVar24 && bVar25)" ( (binary_expression "bVar24 && bVar25" identifier && identifier) )))) ;) (goto_statement "goto LAB_00348646;" goto statement_identifier ;) })) (if_statement "if (bVar4 == false) goto LAB_0034864f;" if (parenthesized_expression "(bVar4 == false)" ( (binary_expression "bVar4 == false" identifier == false) )) (goto_statement "goto LAB_0034864f;" goto statement_identifier ;)) }))) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }" if (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }" { (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          uVar14 = (uint)*(byte *)param_2[2];\n        }" { (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" else (compound_statement "{\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" { (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" if (parenthesized_expression "(uVar14 == 0xffffffff)" ( (binary_expression "uVar14 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) })) }))) })) (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" identifier = (pointer_expression "*(char *)(lVar22 + 0x20)" * (cast_expression "(char *)(lVar22 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) (expression_statement "uVar20 = 0xffffffff;" (assignment_expression "uVar20 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (expression_statement "local_b8 = (ulong)uVar20;" (assignment_expression "local_b8 = (ulong)uVar20" identifier = (cast_expression "(ulong)uVar20" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" identifier = false) ;) }))) (labeled_statement "LAB_00348669:\n  local_a0 = 0x16;" statement_identifier : (expression_statement "local_a0 = 0x16;" (assignment_expression "local_a0 = 0x16" identifier = number_literal) ;)) (if_statement "if (iVar6 != 0x10) {\nLAB_00348678:\n    local_a0 = (ulong)iVar6;\n  }" if (parenthesized_expression "(iVar6 != 0x10)" ( (binary_expression "iVar6 != 0x10" identifier != number_literal) )) (compound_statement "{\nLAB_00348678:\n    local_a0 = (ulong)iVar6;\n  }" { (labeled_statement "LAB_00348678:\n    local_a0 = (ulong)iVar6;" statement_identifier : (expression_statement "local_a0 = (ulong)iVar6;" (assignment_expression "local_a0 = (ulong)iVar6" identifier = (cast_expression "(ulong)iVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;)) })) (expression_statement "bVar21 = local_6b;" (assignment_expression "bVar21 = local_6b" identifier = identifier) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (if_statement "if (cVar5 != '\0') {\n    FUN_002e1e10(&local_58,0x20);\n  }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_002e1e10(&local_58,0x20);\n  }" { (expression_statement "FUN_002e1e10(&local_58,0x20);" (call_expression "FUN_002e1e10(&local_58,0x20)" identifier (argument_list "(&local_58,0x20)" ( (pointer_expression "&local_58" & identifier) , number_literal ))) ;) })) (expression_statement "uVar18 = (ulong)iVar6;" (assignment_expression "uVar18 = (ulong)iVar6" identifier = (cast_expression "(ulong)iVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "bVar3 = *(byte *)(lVar22 + 0x88);" (assignment_expression "bVar3 = *(byte *)(lVar22 + 0x88)" identifier = (pointer_expression "*(byte *)(lVar22 + 0x88)" * (cast_expression "(byte *)(lVar22 + 0x88)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x88)" ( (binary_expression "lVar22 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = 0x7fffffffffffffff;" (assignment_expression "uVar10 = 0x7fffffffffffffff" identifier = number_literal) ;) (if_statement "if (bVar23) {\n    uVar10 = 0x8000000000000000;\n  }" if (parenthesized_expression "(bVar23)" ( identifier )) (compound_statement "{\n    uVar10 = 0x8000000000000000;\n  }" { (expression_statement "uVar10 = 0x8000000000000000;" (assignment_expression "uVar10 = 0x8000000000000000" identifier = number_literal) ;) })) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (if_statement "if (bVar3 == 0) {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_6a = 0;\n    local_6b = false;\n    local_a8 = 0;\n  }\n  else {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_6a = 0;\n    local_6b = false;\n    local_a8 = 0;\n  }" { (if_statement "if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" if (parenthesized_expression "(local_6b == false)" ( (binary_expression "local_6b == false" identifier == false) )) (compound_statement "{\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" { (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (do_statement "do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );" do (compound_statement "{\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      }" { (expression_statement "cVar5 = (char)uVar14;" (assignment_expression "cVar5 = (char)uVar14" identifier = (cast_expression "(char)uVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar6 = (int)cVar5;" (assignment_expression "iVar6 = (int)cVar5" identifier = (cast_expression "(int)cVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }" if (parenthesized_expression "(local_a0 < 0xb)" ( (binary_expression "local_a0 < 0xb" identifier < number_literal) )) (compound_statement "{\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }" { (if_statement "if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;" if (parenthesized_expression "((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5))" ( (binary_expression "(cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)" (parenthesized_expression "(cVar5 < '0')" ( (binary_expression "cVar5 < '0'" identifier < (char_literal "'0'" ' character ')) )) || (parenthesized_expression "((char)((char)local_a0 + '0') <= cVar5)" ( (binary_expression "(char)((char)local_a0 + '0') <= cVar5" (cast_expression "(char)((char)local_a0 + '0')" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)local_a0 + '0')" ( (binary_expression "(char)local_a0 + '0'" (cast_expression "(char)local_a0" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'0'" ' character ')) ))) <= identifier) ))) )) (goto_statement "goto LAB_003489c8;" goto statement_identifier ;)) (labeled_statement "LAB_00348742:\n          iVar6 = iVar6 + -0x30;" statement_identifier : (expression_statement "iVar6 = iVar6 + -0x30;" (assignment_expression "iVar6 = iVar6 + -0x30" identifier = (binary_expression "iVar6 + -0x30" identifier + number_literal)) ;)) }) (else_clause "else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }" else (compound_statement "{\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }" { (if_statement "if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;" if (parenthesized_expression "((byte)(cVar5 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar5 - 0x30U) < 10" (call_expression "(byte)(cVar5 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 - 0x30U)" ( (binary_expression "cVar5 - 0x30U" identifier - number_literal) ))) < number_literal) )) (goto_statement "goto LAB_00348742;" goto statement_identifier ;)) (if_statement "if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }" if (parenthesized_expression "((byte)(cVar5 + 0x9fU) < 6)" ( (binary_expression "(byte)(cVar5 + 0x9fU) < 6" (call_expression "(byte)(cVar5 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 + 0x9fU)" ( (binary_expression "cVar5 + 0x9fU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n            iVar6 = iVar6 + -0x57;\n          }" { (expression_statement "iVar6 = iVar6 + -0x57;" (assignment_expression "iVar6 = iVar6 + -0x57" identifier = (binary_expression "iVar6 + -0x57" identifier + number_literal)) ;) }) (else_clause "else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }" else (compound_statement "{\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }" { (if_statement "if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;" if (parenthesized_expression "(5 < (byte)(cVar5 + 0xbfU))" ( (binary_expression "5 < (byte)(cVar5 + 0xbfU)" number_literal < (call_expression "(byte)(cVar5 + 0xbfU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 + 0xbfU)" ( (binary_expression "cVar5 + 0xbfU" identifier + number_literal) )))) )) (goto_statement "goto LAB_003489c8;" goto statement_identifier ;)) (expression_statement "iVar6 = iVar6 + -0x37;" (assignment_expression "iVar6 = iVar6 + -0x37" identifier = (binary_expression "iVar6 + -0x37" identifier + number_literal)) ;) }))) }))) (if_statement "if (iVar6 == -1) goto LAB_003489c8;" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (goto_statement "goto LAB_003489c8;" goto statement_identifier ;)) (expression_statement "bVar24 = bVar25;" (assignment_expression "bVar24 = bVar25" identifier = identifier) ;) (if_statement "if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }" if (parenthesized_expression "(uVar10 / uVar18 < local_a8)" ( (binary_expression "uVar10 / uVar18 < local_a8" (binary_expression "uVar10 / uVar18" identifier / identifier) < identifier) )) (compound_statement "{\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }" { (expression_statement "local_6a = 1;" (assignment_expression "local_6a = 1" identifier = number_literal) ;) (expression_statement "uVar17 = param_2[2];" (assignment_expression "uVar17 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (if_statement "if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;" if (parenthesized_expression "(uVar17 < (ulong)param_2[3])" ( (binary_expression "uVar17 < (ulong)param_2[3]" identifier < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348793;" goto statement_identifier ;)) (labeled_statement "LAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);" statement_identifier : (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;)) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_003487ac;" goto statement_identifier ;)) (labeled_statement "LAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" statement_identifier : (expression_statement "iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar6 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;)) (expression_statement "bVar4 = iVar6 == -1;" (assignment_expression "bVar4 = iVar6 == -1" identifier = (binary_expression "iVar6 == -1" identifier == number_literal)) ;) (if_statement "if (bVar4) {\n            param_2 = (long *)0x0;\n          }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n            param_2 = (long *)0x0;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;" if (parenthesized_expression "(local_c0 != (long *)0x0 && bVar25)" ( (binary_expression "local_c0 != (long *)0x0 && bVar25" (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) (goto_statement "goto LAB_00348b10;" goto statement_identifier ;)) (labeled_statement "LAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;" statement_identifier : (if_statement "if (bVar24 == bVar4) goto LAB_003487c9;" if (parenthesized_expression "(bVar24 == bVar4)" ( (binary_expression "bVar24 == bVar4" identifier == identifier) )) (goto_statement "goto LAB_003487c9;" goto statement_identifier ;))) }) (else_clause "else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }" else (compound_statement "{\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }" { (expression_statement "uVar17 = local_a8 * uVar18;" (assignment_expression "uVar17 = local_a8 * uVar18" identifier = (binary_expression "local_a8 * uVar18" identifier * identifier)) ;) (expression_statement "local_a8 = (long)iVar6 + uVar17;" (assignment_expression "local_a8 = (long)iVar6 + uVar17" identifier = (binary_expression "(long)iVar6 + uVar17" (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;" (assignment_expression "local_6a = local_6a | uVar10 - (long)iVar6 < uVar17" identifier = (binary_expression "local_6a | uVar10 - (long)iVar6 < uVar17" identifier | (binary_expression "uVar10 - (long)iVar6 < uVar17" (binary_expression "uVar10 - (long)iVar6" identifier - (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) < identifier))) ;) (expression_statement "uVar17 = param_2[2];" (assignment_expression "uVar17 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;" if (parenthesized_expression "((ulong)param_2[3] <= uVar17)" ( (binary_expression "(ulong)param_2[3] <= uVar17" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_00348ac3;" goto statement_identifier ;)) (labeled_statement "LAB_00348793:\n          param_2[2] = uVar17 + 1;" statement_identifier : (expression_statement "param_2[2] = uVar17 + 1;" (assignment_expression "param_2[2] = uVar17 + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar17 + 1" identifier + number_literal)) ;)) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348ae0;" goto statement_identifier ;)) (labeled_statement "LAB_003487ac:\n          bVar4 = false;" statement_identifier : (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;)) (if_statement "if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;" if (parenthesized_expression "(local_c0 == (long *)0x0 || !bVar25)" ( (binary_expression "local_c0 == (long *)0x0 || !bVar25" (binary_expression "local_c0 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) || (unary_expression "!bVar25" ! identifier)) )) (goto_statement "goto LAB_003487c0;" goto statement_identifier ;)) (labeled_statement "LAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;" statement_identifier : (expression_statement "bVar24 = local_c0 != (long *)0x0;" (assignment_expression "bVar24 = local_c0 != (long *)0x0" identifier = (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ;)) (if_statement "if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }" if (parenthesized_expression "((ulong)local_c0[3] <= (ulong)local_c0[2])" ( (binary_expression "(ulong)local_c0[3] <= (ulong)local_c0[2]" (cast_expression "(ulong)local_c0[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_c0[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[2]" identifier [ number_literal ]))) )) (compound_statement "{\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }" { (expression_statement "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0)" identifier = (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" ( (pointer_expression "**(code **)(*local_c0 + 0x48)" * (pointer_expression "*(code **)(*local_c0 + 0x48)" * (cast_expression "(code **)(*local_c0 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_c0 + 0x48)" ( (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" * identifier) + number_literal) ))))) )) (argument_list "(local_c0)" ( identifier )))) ;) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }" if (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) (compound_statement "{\n              plVar2 = local_c0;\n            }" { (expression_statement "plVar2 = local_c0;" (assignment_expression "plVar2 = local_c0" identifier = identifier) ;) })) (expression_statement "local_c0 = plVar2;" (assignment_expression "local_c0 = plVar2" identifier = identifier) ;) (expression_statement "bVar24 = iVar6 == -1 && (bVar24 && bVar25);" (assignment_expression "bVar24 = iVar6 == -1 && (bVar24 && bVar25)" identifier = (binary_expression "iVar6 == -1 && (bVar24 && bVar25)" (binary_expression "iVar6 == -1" identifier == number_literal) && (parenthesized_expression "(bVar24 && bVar25)" ( (binary_expression "bVar24 && bVar25" identifier && identifier) )))) ;) (goto_statement "goto LAB_003487c0;" goto statement_identifier ;) })) (if_statement "if (bVar4 == false) goto LAB_003487c9;" if (parenthesized_expression "(bVar4 == false)" ( (binary_expression "bVar4 == false" identifier == false) )) (goto_statement "goto LAB_003487c9;" goto statement_identifier ;)) }))) (if_statement "if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar14 = 0xffffffff;\n        }" { (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" else (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          uVar14 = (uint)*(byte *)param_2[2];\n        }" { (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" else (compound_statement "{\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" { (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" if (parenthesized_expression "(uVar14 == 0xffffffff)" ( (binary_expression "uVar14 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) })) }))))) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" identifier = number_literal) ;) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" identifier = false) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }" else (compound_statement "{\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }" { (if_statement "if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" if (parenthesized_expression "(local_6b == false)" ( (binary_expression "local_6b == false" identifier == false) )) (compound_statement "{\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" { (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );" do (compound_statement "{\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      }" { (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (expression_statement "cVar5 = (char)uVar14;" (assignment_expression "cVar5 = (char)uVar14" identifier = (cast_expression "(char)uVar14" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }" if (parenthesized_expression "((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5))" ( (binary_expression "(*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)" (parenthesized_expression "(*(byte *)(lVar22 + 0x20) == 0)" ( (binary_expression "*(byte *)(lVar22 + 0x20) == 0" (pointer_expression "*(byte *)(lVar22 + 0x20)" * (cast_expression "(byte *)(lVar22 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(char *)(lVar22 + 0x49) != cVar5)" ( (binary_expression "*(char *)(lVar22 + 0x49) != cVar5" (pointer_expression "*(char *)(lVar22 + 0x49)" * (cast_expression "(char *)(lVar22 + 0x49)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x49)" ( (binary_expression "lVar22 + 0x49" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }" { (if_statement "if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;" if (parenthesized_expression "((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             )" ( (binary_expression "(cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)" (parenthesized_expression "(cVar5 == *(char *)(lVar22 + 0x48))" ( (binary_expression "cVar5 == *(char *)(lVar22 + 0x48)" identifier == (pointer_expression "*(char *)(lVar22 + 0x48)" * (cast_expression "(char *)(lVar22 + 0x48)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x48)" ( (binary_expression "lVar22 + 0x48" identifier + number_literal) ))))) )) || (parenthesized_expression "(pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)" ( (comma_expression "pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0" (assignment_expression "pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0)" identifier = (call_expression "memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0)" identifier (argument_list "((void *)(lVar22 + 0x72),(int)cVar5,local_a0)" ( (cast_expression "(void *)(lVar22 + 0x72)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x72)" ( (binary_expression "lVar22 + 0x72" identifier + number_literal) ))) , (cast_expression "(int)cVar5" ( (type_descriptor "int" primitive_type) ) identifier) , identifier )))) , (binary_expression "pvVar11 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_003489c8;" goto statement_identifier ;)) (expression_statement "iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);" (assignment_expression "iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72)" identifier = (binary_expression "(int)pvVar11 - (int)(void *)(lVar22 + 0x72)" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)(void *)(lVar22 + 0x72)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(void *)(lVar22 + 0x72)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x72)" ( (binary_expression "lVar22 + 0x72" identifier + number_literal) )))))) ;) (if_statement "if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }" if (parenthesized_expression "(0xf < iVar6)" ( (binary_expression "0xf < iVar6" number_literal < identifier) )) (compound_statement "{\n            iVar6 = iVar6 + -6;\n          }" { (expression_statement "iVar6 = iVar6 + -6;" (assignment_expression "iVar6 = iVar6 + -6" identifier = (binary_expression "iVar6 + -6" identifier + number_literal)) ;) })) (if_statement "if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }" if (parenthesized_expression "(local_a8 <= uVar10 / uVar18)" ( (binary_expression "local_a8 <= uVar10 / uVar18" identifier <= (binary_expression "uVar10 / uVar18" identifier / identifier)) )) (compound_statement "{\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }" { (expression_statement "uVar17 = local_a8 * uVar18;" (assignment_expression "uVar17 = local_a8 * uVar18" identifier = (binary_expression "local_a8 * uVar18" identifier * identifier)) ;) (expression_statement "local_a8 = (long)iVar6 + uVar17;" (assignment_expression "local_a8 = (long)iVar6 + uVar17" identifier = (binary_expression "(long)iVar6 + uVar17" (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;" (assignment_expression "local_6a = local_6a | uVar10 - (long)iVar6 < uVar17" identifier = (binary_expression "local_6a | uVar10 - (long)iVar6 < uVar17" identifier | (binary_expression "uVar10 - (long)iVar6 < uVar17" (binary_expression "uVar10 - (long)iVar6" identifier - (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) < identifier))) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00348c3c;" goto statement_identifier ;) })) (expression_statement "uVar17 = param_2[2];" (assignment_expression "uVar17 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "local_6a = bVar3;" (assignment_expression "local_6a = bVar3" identifier = identifier) ;) (if_statement "if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;" if (parenthesized_expression "(uVar17 < (ulong)param_2[3])" ( (binary_expression "uVar17 < (ulong)param_2[3]" identifier < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348c46;" goto statement_identifier ;)) (labeled_statement "LAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);" statement_identifier : (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" ( (pointer_expression "**(code **)(*param_2 + 0x50)" * (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))) ;)) (expression_statement "local_b8._0_1_ = 0;" (assignment_expression "local_b8._0_1_ = 0" (field_expression "local_b8._0_1_" identifier . field_identifier) = number_literal) ;) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (compound_statement "{\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }" { (labeled_statement "LAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" statement_identifier : (expression_statement "iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar6 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;)) (expression_statement "local_b8._0_1_ = 0;" (assignment_expression "local_b8._0_1_ = 0" (field_expression "local_b8._0_1_" identifier . field_identifier) = number_literal) ;) (if_statement "if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b8._0_1_ = bVar3;" (assignment_expression "local_b8._0_1_ = bVar3" (field_expression "local_b8._0_1_" identifier . field_identifier) = identifier) ;) })) })) }) (else_clause "else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }" else (compound_statement "{\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }" { (if_statement "if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }" { (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" identifier = number_literal) ;) (expression_statement "local_6b = (bool)*(byte *)(lVar22 + 0x20);" (assignment_expression "local_6b = (bool)*(byte *)(lVar22 + 0x20)" identifier = (cast_expression "(bool)*(byte *)(lVar22 + 0x20)" ( (type_descriptor "bool" primitive_type) ) (pointer_expression "*(byte *)(lVar22 + 0x20)" * (cast_expression "(byte *)(lVar22 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x20)" ( (binary_expression "lVar22 + 0x20" identifier + number_literal) )))))) ;) (goto_statement "goto joined_r0x003487e4;" goto statement_identifier ;) })) (expression_statement "uVar1 = local_50 + 1;" (assignment_expression "uVar1 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (if_statement "if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n            uVar13 = 0xf;\n          }" { (expression_statement "uVar13 = 0xf;" (assignment_expression "uVar13 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }" else (compound_statement "{\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }" { (expression_statement "uVar13 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar13 = CONCAT71(uStack_47,local_48)" identifier = (call_expression "CONCAT71(uStack_47,local_48)" identifier (argument_list "(uStack_47,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }" if (parenthesized_expression "(uVar13 < uVar1)" ( (binary_expression "uVar13 < uVar1" identifier < identifier) )) (compound_statement "{\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }" { (expression_statement "FUN_002e1960(&local_58,local_50,0,0,1);" (call_expression "FUN_002e1960(&local_58,local_50,0,0,1)" identifier (argument_list "(&local_58,local_50,0,0,1)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (expression_statement "local_b0 = (undefined1)iVar8;" (assignment_expression "local_b0 = (undefined1)iVar8" identifier = (cast_expression "(undefined1)iVar8" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "local_58[uVar17] = local_b0;" (assignment_expression "local_58[uVar17] = local_b0" (subscript_expression "local_58[uVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_58[uVar1] = 0;" (assignment_expression "local_58[uVar1] = 0" (subscript_expression "local_58[uVar1]" identifier [ identifier ]) = number_literal) ;) (expression_statement "local_50 = uVar1;" (assignment_expression "local_50 = uVar1" identifier = identifier) ;) (labeled_statement "LAB_00348c3c:\n          uVar17 = param_2[2];" statement_identifier : (expression_statement "uVar17 = param_2[2];" (assignment_expression "uVar17 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;)) (if_statement "if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;" if (parenthesized_expression "((ulong)param_2[3] <= uVar17)" ( (binary_expression "(ulong)param_2[3] <= uVar17" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_00348c9f;" goto statement_identifier ;)) (labeled_statement "LAB_00348c46:\n          local_b8._0_1_ = 0;" statement_identifier : (expression_statement "local_b8._0_1_ = 0;" (assignment_expression "local_b8._0_1_ = 0" (field_expression "local_b8._0_1_" identifier . field_identifier) = number_literal) ;)) (expression_statement "param_2[2] = uVar17 + 1;" (assignment_expression "param_2[2] = uVar17 + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;" if (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" ( (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00348cc0;" goto statement_identifier ;)) }))) (expression_statement "bVar4 = local_c0 != (long *)0x0 && bVar25;" (assignment_expression "bVar4 = local_c0 != (long *)0x0 && bVar25" identifier = (binary_expression "local_c0 != (long *)0x0 && bVar25" (binary_expression "local_c0 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "bVar24 = bVar25;" (assignment_expression "bVar24 = bVar25" identifier = identifier) ;) (if_statement "if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }" { (if_statement "if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }" if (parenthesized_expression "((ulong)local_c0[2] < (ulong)local_c0[3])" ( (binary_expression "(ulong)local_c0[2] < (ulong)local_c0[3]" (cast_expression "(ulong)local_c0[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_c0[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_c0[3]" identifier [ number_literal ]))) )) (compound_statement "{\n            bVar24 = false;\n          }" { (expression_statement "bVar24 = false;" (assignment_expression "bVar24 = false" identifier = false) ;) }) (else_clause "else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }" else (compound_statement "{\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }" { (expression_statement "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0)" identifier = (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" ( (pointer_expression "**(code **)(*local_c0 + 0x48)" * (pointer_expression "*(code **)(*local_c0 + 0x48)" * (cast_expression "(code **)(*local_c0 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_c0 + 0x48)" ( (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" * identifier) + number_literal) ))))) )) (argument_list "(local_c0)" ( identifier )))) ;) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }" if (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) (compound_statement "{\n              plVar2 = local_c0;\n            }" { (expression_statement "plVar2 = local_c0;" (assignment_expression "plVar2 = local_c0" identifier = identifier) ;) })) (expression_statement "bVar24 = iVar6 == -1 && bVar4;" (assignment_expression "bVar24 = iVar6 == -1 && bVar4" identifier = (binary_expression "iVar6 == -1 && bVar4" (binary_expression "iVar6 == -1" identifier == number_literal) && identifier)) ;) (expression_statement "local_c0 = plVar2;" (assignment_expression "local_c0 = plVar2" identifier = identifier) ;) }))) })) (if_statement "if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;" if (parenthesized_expression "((bool)(byte)local_b8 == bVar24)" ( (binary_expression "(bool)(byte)local_b8 == bVar24" (cast_expression "(bool)(byte)local_b8" ( (type_descriptor "bool" primitive_type) ) (cast_expression "(byte)local_b8" ( (type_descriptor "byte" type_identifier) ) identifier)) == identifier) )) (goto_statement "goto code_r0x00348c77;" goto statement_identifier ;)) (if_statement "if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar14 = 0xffffffff;\n        }" { (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" else (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          uVar14 = (uint)*(byte *)param_2[2];\n        }" { (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" else (compound_statement "{\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" { (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" identifier = (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" if (parenthesized_expression "(uVar14 == 0xffffffff)" ( (binary_expression "uVar14 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;) })) }))))) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" identifier = number_literal) ;) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" identifier = false) ;) }))) (labeled_statement "joined_r0x003487e4:\n  if (uVar17 == 0) {\n    local_50 = 0;\n    if ((bVar19) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }\n  else {\n    local_b0 = (undefined1)iVar8;\n    uVar10 = uVar17 + 1;\n    if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }\n    local_58[uVar17] = local_b0;\n    local_58[uVar10] = 0;\n    local_50 = uVar10;\n    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" statement_identifier : (if_statement "if (uVar17 == 0) {\n    local_50 = 0;\n    if ((bVar19) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }\n  else {\n    local_b0 = (undefined1)iVar8;\n    uVar10 = uVar17 + 1;\n    if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }\n    local_58[uVar17] = local_b0;\n    local_58[uVar10] = 0;\n    local_50 = uVar10;\n    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n    local_50 = 0;\n    if ((bVar19) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }" { (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (if_statement "if ((bVar19) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }" if (parenthesized_expression "((bVar19) || (iVar8 != 0))" ( (binary_expression "(bVar19) || (iVar8 != 0)" (parenthesized_expression "(bVar19)" ( identifier )) || (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) ))) )) (compound_statement "{\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }" { (labeled_statement "LAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }" statement_identifier : (if_statement "if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }" if (parenthesized_expression "(local_6b == false)" ( (binary_expression "local_6b == false" identifier == false) )) (compound_statement "{\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }" { (if_statement "if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }" if (parenthesized_expression "(local_6a == 0)" ( (binary_expression "local_6a == 0" identifier == number_literal) )) (compound_statement "{\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }" { (expression_statement "uVar10 = -local_a8;" (assignment_expression "uVar10 = -local_a8" identifier = (unary_expression "-local_a8" - identifier)) ;) (if_statement "if (!bVar23) {\n            uVar10 = local_a8;\n          }" if (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) (compound_statement "{\n            uVar10 = local_a8;\n          }" { (expression_statement "uVar10 = local_a8;" (assignment_expression "uVar10 = local_a8" identifier = identifier) ;) })) (expression_statement "*param_8 = uVar10;" (assignment_expression "*param_8 = uVar10" (pointer_expression "*param_8" * identifier) = identifier) ;) }) (else_clause "else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }" else (compound_statement "{\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }" { (expression_statement "uVar10 = 0x8000000000000000;" (assignment_expression "uVar10 = 0x8000000000000000" identifier = number_literal) ;) (if_statement "if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }" if (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) (compound_statement "{\n            uVar10 = 0x7fffffffffffffff;\n          }" { (expression_statement "uVar10 = 0x7fffffffffffffff;" (assignment_expression "uVar10 = 0x7fffffffffffffff" identifier = number_literal) ;) })) (expression_statement "*param_8 = uVar10;" (assignment_expression "*param_8 = uVar10" (pointer_expression "*param_8" * identifier) = identifier) ;) (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" * identifier) = number_literal) ;) }))) (goto_statement "goto LAB_0034881d;" goto statement_identifier ;) }))) })) }) (else_clause "else {\n    local_b0 = (undefined1)iVar8;\n    uVar10 = uVar17 + 1;\n    if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }\n    local_58[uVar17] = local_b0;\n    local_58[uVar10] = 0;\n    local_50 = uVar10;\n    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" else (compound_statement "{\n    local_b0 = (undefined1)iVar8;\n    uVar10 = uVar17 + 1;\n    if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }\n    local_58[uVar17] = local_b0;\n    local_58[uVar10] = 0;\n    local_50 = uVar10;\n    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" { (expression_statement "local_b0 = (undefined1)iVar8;" (assignment_expression "local_b0 = (undefined1)iVar8" identifier = (cast_expression "(undefined1)iVar8" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uVar17 + 1;" (assignment_expression "uVar10 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (if_statement "if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }" if (parenthesized_expression "(local_58 == &local_48)" ( (binary_expression "local_58 == &local_48" identifier == (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n      uVar18 = 0xf;\n    }" { (expression_statement "uVar18 = 0xf;" (assignment_expression "uVar18 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }" else (compound_statement "{\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }" { (expression_statement "uVar18 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar18 = CONCAT71(uStack_47,local_48)" identifier = (call_expression "CONCAT71(uStack_47,local_48)" identifier (argument_list "(uStack_47,local_48)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }" if (parenthesized_expression "(uVar18 < uVar10)" ( (binary_expression "uVar18 < uVar10" identifier < identifier) )) (compound_statement "{\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }" { (expression_statement "local_50 = uVar17;" (assignment_expression "local_50 = uVar17" identifier = identifier) ;) (expression_statement "FUN_002e1960(&local_58,uVar17,0,0,1);" (call_expression "FUN_002e1960(&local_58,uVar17,0,0,1)" identifier (argument_list "(&local_58,uVar17,0,0,1)" ( (pointer_expression "&local_58" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (expression_statement "local_58[uVar17] = local_b0;" (assignment_expression "local_58[uVar17] = local_b0" (subscript_expression "local_58[uVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_58[uVar10] = 0;" (assignment_expression "local_58[uVar10] = 0" (subscript_expression "local_58[uVar10]" identifier [ identifier ]) = number_literal) ;) (expression_statement "local_50 = uVar10;" (assignment_expression "local_50 = uVar10" identifier = identifier) ;) (expression_statement "cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);" (assignment_expression "cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58)" identifier = (call_expression "FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58)" identifier (argument_list "(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58)" ( (pointer_expression "*(undefined8 *)(lVar22 + 0x10)" * (cast_expression "(undefined8 *)(lVar22 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x10)" ( (binary_expression "lVar22 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(lVar22 + 0x18)" * (cast_expression "(undefined8 *)(lVar22 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar22 + 0x18)" ( (binary_expression "lVar22 + 0x18" identifier + number_literal) )))) , (pointer_expression "&local_58" & identifier) )))) ;) (if_statement "if (cVar5 == '\0') {\n      *param_7 = 4;\n    }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_7 = 4;\n    }" { (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" * identifier) = number_literal) ;) })) (if_statement "if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;" if (parenthesized_expression "(((iVar8 != 0) || (bVar19)) || (local_50 != 0))" ( (binary_expression "((iVar8 != 0) || (bVar19)) || (local_50 != 0)" (parenthesized_expression "((iVar8 != 0) || (bVar19))" ( (binary_expression "(iVar8 != 0) || (bVar19)" (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) || (parenthesized_expression "(bVar19)" ( identifier ))) )) || (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_00348a5d;" goto statement_identifier ;)) })))) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" * identifier) = number_literal) ;) (labeled_statement "LAB_0034881d:\n  if (bVar21 != 0) {\n    *param_7 = *param_7 | 2;\n  }" statement_identifier : (if_statement "if (bVar21 != 0) {\n    *param_7 = *param_7 | 2;\n  }" if (parenthesized_expression "(bVar21 != 0)" ( (binary_expression "bVar21 != 0" identifier != number_literal) )) (compound_statement "{\n    *param_7 = *param_7 | 2;\n  }" { (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 2" (pointer_expression "*param_7" * identifier) | number_literal)) ;) }))) (if_statement "if (local_58 != &local_48) {\n    FUN_002dac70();\n  }" if (parenthesized_expression "(local_58 != &local_48)" ( (binary_expression "local_58 != &local_48" identifier != (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n    FUN_002dac70();\n  }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "auVar26._8_8_ = param_3 & 0xffffffff00000000 | local_b8;" (assignment_expression "auVar26._8_8_ = param_3 & 0xffffffff00000000 | local_b8" (field_expression "auVar26._8_8_" identifier . field_identifier) = (binary_expression "param_3 & 0xffffffff00000000 | local_b8" (binary_expression "param_3 & 0xffffffff00000000" identifier & number_literal) | identifier)) ;) (expression_statement "auVar26._0_8_ = param_2;" (assignment_expression "auVar26._0_8_ = param_2" (field_expression "auVar26._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar26;" return identifier ;) (labeled_statement "code_r0x00348c77:\n  local_b8 = 0xffffffff;" statement_identifier : (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "bVar21 = bVar3;" (assignment_expression "bVar21 = bVar3" identifier = identifier) ;) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (goto_statement "goto joined_r0x003487e4;" goto statement_identifier ;) (labeled_statement "LAB_003487c9:\n  local_b8 = 0xffffffff;" statement_identifier : (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "bVar21 = 1;" (assignment_expression "bVar21 = 1" identifier = number_literal) ;) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (goto_statement "goto joined_r0x003487e4;" goto statement_identifier ;) (labeled_statement "LAB_003489c8:\n  bVar21 = 0;" statement_identifier : (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" identifier = number_literal) ;)) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" identifier = identifier) ;) (goto_statement "goto joined_r0x003487e4;" goto statement_identifier ;) (ERROR "}" }))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (declaration (macro_type_specifier IDENT ( (type_descriptor TYPE) )) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT (pointer_declarator * IDENT) ) { IDENT) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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 *)) ) (call_expression IDENT (argument_list ( 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) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (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) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT ))) ;) (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 IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && IDENT)) ;) (expression_statement (assignment_expression IDENT = 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 IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) && IDENT)) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = 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 IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) && IDENT)) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (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 = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (unary_expression ! IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_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 IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != 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 ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (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 IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && IDENT)) ;) (expression_statement (assignment_expression IDENT = 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 IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) && IDENT)) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (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 = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (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 = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_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 IDENT = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) | (binary_expression IDENT ^ LIT)) )))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) || (binary_expression IDENT == LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;)) (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 ]))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_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 IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (break_statement break ;)) (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 IDENT + LIT) )))) != IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) || (binary_expression IDENT == LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))) ;)) (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 ]))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) || (unary_expression ! IDENT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT))) ;)) (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 IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (binary_expression IDENT && IDENT) )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == BOOL) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (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 = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_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 IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (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 IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == BOOL) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < (char_literal ' character ')) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (char_literal ' character ')) ))) <= IDENT) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) < LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) )))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT / IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))) ;)) (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 ]))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (binary_expression IDENT - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) < IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;)) (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 ]))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) || (unary_expression ! IDENT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT))) ;)) (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 IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (binary_expression IDENT && IDENT) )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == BOOL) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_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 = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }))))) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == BOOL) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (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 (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , (cast_expression ( (type_descriptor TYPE) ) IDENT) , IDENT )))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT / IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (binary_expression IDENT - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) < IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (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 { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) })) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , LIT , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (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 ]))) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && IDENT)) ;) (expression_statement (assignment_expression IDENT = 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 IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) && IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) == IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_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 = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }))))) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == BOOL) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) (goto_statement goto statement_identifier ;) }))) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , LIT , LIT ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (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) )))) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( IDENT ))) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (goto_statement goto statement_identifier ;)) })))) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression (binary_expression IDENT & LIT) | IDENT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return IDENT ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) (ERROR }))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (declaration "FUN_00348410(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,long param_6,\n            uint *param_7,ulong *param_8)\n\n{\n  ulong uVar1;" (macro_type_specifier "FUN_00348410(undefined8" (identifier "FUN_00348410") (( "(") (type_descriptor "undefined8" (type_identifier "undefined8")) () "")) (identifier "param_1") (, ",") (ERROR "long" (identifier "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2")) (, ",") (ERROR "ulong" (identifier "ulong")) (identifier "param_3") (, ",") (ERROR "long" (identifier "long")) (pointer_declarator "*param_4" (* "*") (identifier "param_4")) (, ",") (ERROR "int" (identifier "int")) (identifier "param_5") (, ",") (ERROR "long" (identifier "long")) (identifier "param_6") (, ",") (ERROR "uint" (identifier "uint")) (pointer_declarator "*param_7" (* "*") (identifier "param_7")) (, ",") (ERROR "ulong *param_8)\n\n{\n  ulong" (identifier "ulong") (pointer_declarator "*param_8" (* "*") (identifier "param_8")) () ")") ({ "{") (identifier "ulong")) (identifier "uVar1") (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "bool bVar4;" (primitive_type "bool") (identifier "bVar4") (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "void *pvVar11;" (primitive_type "void") (pointer_declarator "*pvVar11" (* "*") (identifier "pvVar11")) (; ";")) (declaration "undefined8 *puVar12;" (type_identifier "undefined8") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "ulong uVar13;" (type_identifier "ulong") (identifier "uVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "char cVar16;" (primitive_type "char") (identifier "cVar16") (; ";")) (declaration "ulong uVar17;" (type_identifier "ulong") (identifier "uVar17") (; ";")) (declaration "ulong uVar18;" (type_identifier "ulong") (identifier "uVar18") (; ";")) (declaration "bool bVar19;" (primitive_type "bool") (identifier "bVar19") (; ";")) (declaration "uint uVar20;" (type_identifier "uint") (identifier "uVar20") (; ";")) (declaration "byte bVar21;" (type_identifier "byte") (identifier "bVar21") (; ";")) (declaration "long lVar22;" (sized_type_specifier "long" (long "long")) (identifier "lVar22") (; ";")) (declaration "bool bVar23;" (primitive_type "bool") (identifier "bVar23") (; ";")) (declaration "bool bVar24;" (primitive_type "bool") (identifier "bVar24") (; ";")) (declaration "bool bVar25;" (primitive_type "bool") (identifier "bVar25") (; ";")) (declaration "undefined1 auVar26 [16];" (type_identifier "undefined1") (array_declarator "auVar26 [16]" (identifier "auVar26") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "long *local_c0;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_c0" (* "*") (identifier "local_c0")) (; ";")) (declaration "ulong local_b8;" (type_identifier "ulong") (identifier "local_b8") (; ";")) (declaration "undefined1 local_b0;" (type_identifier "undefined1") (identifier "local_b0") (; ";")) (declaration "ulong local_a8;" (type_identifier "ulong") (identifier "local_a8") (; ";")) (declaration "ulong local_a0;" (type_identifier "ulong") (identifier "local_a0") (; ";")) (declaration "bool local_6b;" (primitive_type "bool") (identifier "local_6b") (; ";")) (declaration "byte local_6a;" (type_identifier "byte") (identifier "local_6a") (; ";")) (declaration "undefined1 *local_58;" (type_identifier "undefined1") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "ulong local_50;" (type_identifier "ulong") (identifier "local_50") (; ";")) (declaration "undefined1 local_48;" (type_identifier "undefined1") (identifier "local_48") (; ";")) (declaration "undefined7 uStack_47;" (type_identifier "undefined7") (identifier "uStack_47") (; ";")) (expression_statement "local_b8 = param_3 & 0xffffffff;" (assignment_expression "local_b8 = param_3 & 0xffffffff" (identifier "local_b8") (= "=") (binary_expression "param_3 & 0xffffffff" (identifier "param_3") (& "&") (number_literal "0xffffffff"))) (; ";")) (expression_statement "lVar9 = FUN_002dd3b0(&DAT_0044bd90);" (assignment_expression "lVar9 = FUN_002dd3b0(&DAT_0044bd90)" (identifier "lVar9") (= "=") (call_expression "FUN_002dd3b0(&DAT_0044bd90)" (identifier "FUN_002dd3b0") (argument_list "(&DAT_0044bd90)" (( "(") (pointer_expression "&DAT_0044bd90" (& "&") (identifier "DAT_0044bd90")) () ")")))) (; ";")) (expression_statement "plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8);" (assignment_expression "plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8)" (identifier "plVar2") (= "=") (cast_expression "(long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8)" (( "(") (binary_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8" (pointer_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18)" (* "*") (cast_expression "(long *)(*(long *)(param_6 + 0xd0) + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_6 + 0xd0) + 0x18)" (( "(") (binary_expression "*(long *)(param_6 + 0xd0) + 0x18" (pointer_expression "*(long *)(param_6 + 0xd0)" (* "*") (cast_expression "(long *)(param_6 + 0xd0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + 0xd0)" (( "(") (binary_expression "param_6 + 0xd0" (identifier "param_6") (+ "+") (number_literal "0xd0")) () ")")))) (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (binary_expression "lVar9 * 8" (identifier "lVar9") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "lVar22 = *plVar2;" (assignment_expression "lVar22 = *plVar2" (identifier "lVar22") (= "=") (pointer_expression "*plVar2" (* "*") (identifier "plVar2"))) (; ";")) (if_statement "if (lVar22 == 0) {\n                    \n    puVar12 = (undefined8 *)FUN_002d94a0(0x90);\n    *(undefined4 *)(puVar12 + 1) = 0;\n    *(undefined1 *)(puVar12 + 4) = 0;\n    puVar12[2] = 0;\n    *puVar12 = &PTR_FUN_00439298;\n    puVar12[3] = 0;\n    puVar12[5] = 0;\n    puVar12[6] = 0;\n    puVar12[7] = 0;\n    puVar12[8] = 0;\n    *(undefined2 *)(puVar12 + 9) = 0;\n    *(undefined1 *)(puVar12 + 0x11) = 0;\n                    \n    FUN_002ece10(puVar12,param_6 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9);\n    lVar22 = *plVar2;\n  }" (if "if") (parenthesized_expression "(lVar22 == 0)" (( "(") (binary_expression "lVar22 == 0" (identifier "lVar22") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    puVar12 = (undefined8 *)FUN_002d94a0(0x90);\n    *(undefined4 *)(puVar12 + 1) = 0;\n    *(undefined1 *)(puVar12 + 4) = 0;\n    puVar12[2] = 0;\n    *puVar12 = &PTR_FUN_00439298;\n    puVar12[3] = 0;\n    puVar12[5] = 0;\n    puVar12[6] = 0;\n    puVar12[7] = 0;\n    puVar12[8] = 0;\n    *(undefined2 *)(puVar12 + 9) = 0;\n    *(undefined1 *)(puVar12 + 0x11) = 0;\n                    \n    FUN_002ece10(puVar12,param_6 + 0xd0);\n    FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9);\n    lVar22 = *plVar2;\n  }" ({ "{") (expression_statement "puVar12 = (undefined8 *)FUN_002d94a0(0x90);" (assignment_expression "puVar12 = (undefined8 *)FUN_002d94a0(0x90)" (identifier "puVar12") (= "=") (cast_expression "(undefined8 *)FUN_002d94a0(0x90)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d94a0(0x90)" (identifier "FUN_002d94a0") (argument_list "(0x90)" (( "(") (number_literal "0x90") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar12 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar12 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar12 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar12 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 1)" (( "(") (binary_expression "puVar12 + 1" (identifier "puVar12") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar12 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar12 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar12 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar12 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 4)" (( "(") (binary_expression "puVar12 + 4" (identifier "puVar12") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar12[2] = 0;" (assignment_expression "puVar12[2] = 0" (subscript_expression "puVar12[2]" (identifier "puVar12") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar12 = &PTR_FUN_00439298;" (assignment_expression "*puVar12 = &PTR_FUN_00439298" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (= "=") (pointer_expression "&PTR_FUN_00439298" (& "&") (identifier "PTR_FUN_00439298"))) (; ";")) (expression_statement "puVar12[3] = 0;" (assignment_expression "puVar12[3] = 0" (subscript_expression "puVar12[3]" (identifier "puVar12") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar12[5] = 0;" (assignment_expression "puVar12[5] = 0" (subscript_expression "puVar12[5]" (identifier "puVar12") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar12[6] = 0;" (assignment_expression "puVar12[6] = 0" (subscript_expression "puVar12[6]" (identifier "puVar12") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar12[7] = 0;" (assignment_expression "puVar12[7] = 0" (subscript_expression "puVar12[7]" (identifier "puVar12") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar12[8] = 0;" (assignment_expression "puVar12[8] = 0" (subscript_expression "puVar12[8]" (identifier "puVar12") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(puVar12 + 9) = 0;" (assignment_expression "*(undefined2 *)(puVar12 + 9) = 0" (pointer_expression "*(undefined2 *)(puVar12 + 9)" (* "*") (cast_expression "(undefined2 *)(puVar12 + 9)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 9)" (( "(") (binary_expression "puVar12 + 9" (identifier "puVar12") (+ "+") (number_literal "9")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar12 + 0x11) = 0;" (assignment_expression "*(undefined1 *)(puVar12 + 0x11) = 0" (pointer_expression "*(undefined1 *)(puVar12 + 0x11)" (* "*") (cast_expression "(undefined1 *)(puVar12 + 0x11)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0x11)" (( "(") (binary_expression "puVar12 + 0x11" (identifier "puVar12") (+ "+") (number_literal "0x11")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_002ece10(puVar12,param_6 + 0xd0);" (call_expression "FUN_002ece10(puVar12,param_6 + 0xd0)" (identifier "FUN_002ece10") (argument_list "(puVar12,param_6 + 0xd0)" (( "(") (identifier "puVar12") (, ",") (binary_expression "param_6 + 0xd0" (identifier "param_6") (+ "+") (number_literal "0xd0")) () ")"))) (; ";")) (expression_statement "FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9);" (call_expression "FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9)" (identifier "FUN_002dd820") (argument_list "(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9)" (( "(") (pointer_expression "*(undefined8 *)(param_6 + 0xd0)" (* "*") (cast_expression "(undefined8 *)(param_6 + 0xd0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + 0xd0)" (( "(") (binary_expression "param_6 + 0xd0" (identifier "param_6") (+ "+") (number_literal "0xd0")) () ")")))) (, ",") (identifier "puVar12") (, ",") (identifier "lVar9") () ")"))) (; ";")) (expression_statement "lVar22 = *plVar2;" (assignment_expression "lVar22 = *plVar2" (identifier "lVar22") (= "=") (pointer_expression "*plVar2" (* "*") (identifier "plVar2"))) (; ";")) (} "}"))) (expression_statement "uVar15 = *(uint *)(param_6 + 0x18);" (assignment_expression "uVar15 = *(uint *)(param_6 + 0x18)" (identifier "uVar15") (= "=") (pointer_expression "*(uint *)(param_6 + 0x18)" (* "*") (cast_expression "(uint *)(param_6 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + 0x18)" (( "(") (binary_expression "param_6 + 0x18" (identifier "param_6") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "uVar14 = uVar15 & 0x4a;" (assignment_expression "uVar14 = uVar15 & 0x4a" (identifier "uVar14") (= "=") (binary_expression "uVar15 & 0x4a" (identifier "uVar15") (& "&") (number_literal "0x4a"))) (; ";")) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" (identifier "iVar6") (= "=") (number_literal "8")) (; ";")) (if_statement "if (uVar14 != 0x40) {\n    iVar6 = 0x10;\n    if (uVar14 != 8) {\n      iVar6 = 10;\n    }\n  }" (if "if") (parenthesized_expression "(uVar14 != 0x40)" (( "(") (binary_expression "uVar14 != 0x40" (identifier "uVar14") (!= "!=") (number_literal "0x40")) () ")")) (compound_statement "{\n    iVar6 = 0x10;\n    if (uVar14 != 8) {\n      iVar6 = 10;\n    }\n  }" ({ "{") (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" (identifier "iVar6") (= "=") (number_literal "0x10")) (; ";")) (if_statement "if (uVar14 != 8) {\n      iVar6 = 10;\n    }" (if "if") (parenthesized_expression "(uVar14 != 8)" (( "(") (binary_expression "uVar14 != 8" (identifier "uVar14") (!= "!=") (number_literal "8")) () ")")) (compound_statement "{\n      iVar6 = 10;\n    }" ({ "{") (expression_statement "iVar6 = 10;" (assignment_expression "iVar6 = 10" (identifier "iVar6") (= "=") (number_literal "10")) (; ";")) (} "}"))) (} "}"))) (expression_statement "bVar24 = (uint)param_3 == 0xffffffff;" (assignment_expression "bVar24 = (uint)param_3 == 0xffffffff" (identifier "bVar24") (= "=") (binary_expression "(uint)param_3 == 0xffffffff" (cast_expression "(uint)param_3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_3")) (== "==") (number_literal "0xffffffff"))) (; ";")) (expression_statement "bVar23 = param_2 != (long *)0x0 && bVar24;" (assignment_expression "bVar23 = param_2 != (long *)0x0 && bVar24" (identifier "bVar23") (= "=") (binary_expression "param_2 != (long *)0x0 && bVar24" (binary_expression "param_2 != (long *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar24"))) (; ";")) (expression_statement "bVar19 = bVar24;" (assignment_expression "bVar19 = bVar24" (identifier "bVar19") (= "=") (identifier "bVar24")) (; ";")) (if_statement "if (bVar23) {\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar19 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }\n  }" (if "if") (parenthesized_expression "(bVar23)" (( "(") (identifier "bVar23") () ")")) (compound_statement "{\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar19 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }\n  }" ({ "{") (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      bVar19 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }" (if "if") (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" (( "(") (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      bVar19 = false;\n    }" ({ "{") (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" (identifier "bVar19") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }" (else "else") (compound_statement "{\n      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n      plVar2 = (long *)0x0;\n      if (iVar8 != -1) {\n        plVar2 = param_2;\n      }\n      param_2 = plVar2;\n      bVar19 = iVar8 == -1 && bVar23;\n    }" ({ "{") (expression_statement "iVar8 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar8 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "iVar8") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" (identifier "plVar2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar8 != -1) {\n        plVar2 = param_2;\n      }" (if "if") (parenthesized_expression "(iVar8 != -1)" (( "(") (binary_expression "iVar8 != -1" (identifier "iVar8") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n        plVar2 = param_2;\n      }" ({ "{") (expression_statement "plVar2 = param_2;" (assignment_expression "plVar2 = param_2" (identifier "plVar2") (= "=") (identifier "param_2")) (; ";")) (} "}"))) (expression_statement "param_2 = plVar2;" (assignment_expression "param_2 = plVar2" (identifier "param_2") (= "=") (identifier "plVar2")) (; ";")) (expression_statement "bVar19 = iVar8 == -1 && bVar23;" (assignment_expression "bVar19 = iVar8 == -1 && bVar23" (identifier "bVar19") (= "=") (binary_expression "iVar8 == -1 && bVar23" (binary_expression "iVar8 == -1" (identifier "iVar8") (== "==") (number_literal "-1")) (&& "&&") (identifier "bVar23"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "uVar15 = uVar15 & 0x4a;" (assignment_expression "uVar15 = uVar15 & 0x4a" (identifier "uVar15") (= "=") (binary_expression "uVar15 & 0x4a" (identifier "uVar15") (& "&") (number_literal "0x4a"))) (; ";")) (expression_statement "bVar25 = param_5 == -1;" (assignment_expression "bVar25 = param_5 == -1" (identifier "bVar25") (= "=") (binary_expression "param_5 == -1" (identifier "param_5") (== "==") (number_literal "-1"))) (; ";")) (expression_statement "bVar4 = param_4 != (long *)0x0 && bVar25;" (assignment_expression "bVar4 = param_4 != (long *)0x0 && bVar25" (identifier "bVar4") (= "=") (binary_expression "param_4 != (long *)0x0 && bVar25" (binary_expression "param_4 != (long *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar25"))) (; ";")) (expression_statement "local_c0 = param_4;" (assignment_expression "local_c0 = param_4" (identifier "local_c0") (= "=") (identifier "param_4")) (; ";")) (expression_statement "bVar23 = bVar25;" (assignment_expression "bVar23 = bVar25" (identifier "bVar23") (= "=") (identifier "bVar25")) (; ";")) (if_statement "if (bVar4) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar23 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }\n  }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar23 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }\n  }" ({ "{") (if_statement "if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar23 = false;\n    }\n    else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }" (if "if") (parenthesized_expression "((ulong)param_4[2] < (ulong)param_4[3])" (( "(") (binary_expression "(ulong)param_4[2] < (ulong)param_4[3]" (cast_expression "(ulong)param_4[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)param_4[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      bVar23 = false;\n    }" ({ "{") (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" (identifier "bVar23") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }" (else "else") (compound_statement "{\n      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);\n      local_c0 = (long *)0x0;\n      if (iVar8 != -1) {\n        local_c0 = param_4;\n      }\n      bVar23 = iVar8 == -1 && bVar4;\n    }" ({ "{") (expression_statement "iVar8 = (**(code **)(*param_4 + 0x48))(param_4);" (assignment_expression "iVar8 = (**(code **)(*param_4 + 0x48))(param_4)" (identifier "iVar8") (= "=") (call_expression "(**(code **)(*param_4 + 0x48))(param_4)" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_4 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_4 + 0x48)" (* "*") (cast_expression "(code **)(*param_4 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_4 + 0x48)" (( "(") (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (expression_statement "local_c0 = (long *)0x0;" (assignment_expression "local_c0 = (long *)0x0" (identifier "local_c0") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar8 != -1) {\n        local_c0 = param_4;\n      }" (if "if") (parenthesized_expression "(iVar8 != -1)" (( "(") (binary_expression "iVar8 != -1" (identifier "iVar8") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n        local_c0 = param_4;\n      }" ({ "{") (expression_statement "local_c0 = param_4;" (assignment_expression "local_c0 = param_4" (identifier "local_c0") (= "=") (identifier "param_4")) (; ";")) (} "}"))) (expression_statement "bVar23 = iVar8 == -1 && bVar4;" (assignment_expression "bVar23 = iVar8 == -1 && bVar4" (identifier "bVar23") (= "=") (binary_expression "iVar8 == -1 && bVar4" (binary_expression "iVar8 == -1" (identifier "iVar8") (== "==") (number_literal "-1")) (&& "&&") (identifier "bVar4"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (bVar23 == bVar19) {\n    cVar5 = *(char *)(lVar22 + 0x20);\n    bVar23 = false;\n    uVar14 = 0;\n    bVar19 = false;\n    local_6b = true;\n    iVar8 = 0;\n  }\n  else {\n    if ((param_2 == (long *)0x0) || (!bVar24)) {\n      uVar14 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar22 + 0x20);\n    cVar16 = (char)uVar14;\n    bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;\n    if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar23 = false;\n    }\n    bVar19 = false;\n    iVar8 = 0;\n    do {\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    } while (bVar19);\n    local_b8 = (ulong)uVar20;\n    local_6b = false;\n  }" (if "if") (parenthesized_expression "(bVar23 == bVar19)" (( "(") (binary_expression "bVar23 == bVar19" (identifier "bVar23") (== "==") (identifier "bVar19")) () ")")) (compound_statement "{\n    cVar5 = *(char *)(lVar22 + 0x20);\n    bVar23 = false;\n    uVar14 = 0;\n    bVar19 = false;\n    local_6b = true;\n    iVar8 = 0;\n  }" ({ "{") (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" (identifier "cVar5") (= "=") (pointer_expression "*(char *)(lVar22 + 0x20)" (* "*") (cast_expression "(char *)(lVar22 + 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x20)" (( "(") (binary_expression "lVar22 + 0x20" (identifier "lVar22") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" (identifier "bVar23") (= "=") (false "false")) (; ";")) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" (identifier "bVar19") (= "=") (false "false")) (; ";")) (expression_statement "local_6b = true;" (assignment_expression "local_6b = true" (identifier "local_6b") (= "=") (true "true")) (; ";")) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    if ((param_2 == (long *)0x0) || (!bVar24)) {\n      uVar14 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar22 + 0x20);\n    cVar16 = (char)uVar14;\n    bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;\n    if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar23 = false;\n    }\n    bVar19 = false;\n    iVar8 = 0;\n    do {\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    } while (bVar19);\n    local_b8 = (ulong)uVar20;\n    local_6b = false;\n  }" (else "else") (compound_statement "{\n    if ((param_2 == (long *)0x0) || (!bVar24)) {\n      uVar14 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }\n    cVar5 = *(char *)(lVar22 + 0x20);\n    cVar16 = (char)uVar14;\n    bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;\n    if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar23 = false;\n    }\n    bVar19 = false;\n    iVar8 = 0;\n    do {\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    } while (bVar19);\n    local_b8 = (ulong)uVar20;\n    local_6b = false;\n  }" ({ "{") (if_statement "if ((param_2 == (long *)0x0) || (!bVar24)) {\n      uVar14 = (uint)param_3 & 0xff;\n    }\n    else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" (if "if") (parenthesized_expression "((param_2 == (long *)0x0) || (!bVar24))" (( "(") (binary_expression "(param_2 == (long *)0x0) || (!bVar24)" (parenthesized_expression "(param_2 == (long *)0x0)" (( "(") (binary_expression "param_2 == (long *)0x0" (identifier "param_2") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(!bVar24)" (( "(") (unary_expression "!bVar24" (! "!") (identifier "bVar24")) () ")"))) () ")")) (compound_statement "{\n      uVar14 = (uint)param_3 & 0xff;\n    }" ({ "{") (expression_statement "uVar14 = (uint)param_3 & 0xff;" (assignment_expression "uVar14 = (uint)param_3 & 0xff" (identifier "uVar14") (= "=") (binary_expression "(uint)param_3 & 0xff" (cast_expression "(uint)param_3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_3")) (& "&") (number_literal "0xff"))) (; ";")) (} "}")) (else_clause "else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" (else "else") (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n      uVar14 = (uint)*(byte *)param_2[2];\n    }\n    else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" (if "if") (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" (( "(") (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(byte *)param_2[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      uVar14 = (uint)*(byte *)param_2[2];\n    }" ({ "{") (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" (identifier "uVar14") (= "=") (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" (else "else") (compound_statement "{\n      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n      if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }\n    }" ({ "{") (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "uVar14") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (uVar14 == 0xffffffff) {\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }" (if "if") (parenthesized_expression "(uVar14 == 0xffffffff)" (( "(") (binary_expression "uVar14 == 0xffffffff" (identifier "uVar14") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n        param_2 = (long *)0x0;\n        uVar14 = 0xffffffff;\n      }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" (identifier "uVar14") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (} "}")))))) (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" (identifier "cVar5") (= "=") (pointer_expression "*(char *)(lVar22 + 0x20)" (* "*") (cast_expression "(char *)(lVar22 + 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x20)" (( "(") (binary_expression "lVar22 + 0x20" (identifier "lVar22") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "cVar16 = (char)uVar14;" (assignment_expression "cVar16 = (char)uVar14" (identifier "cVar16") (= "=") (cast_expression "(char)uVar14" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar14"))) (; ";")) (expression_statement "bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;" (assignment_expression "bVar23 = *(char *)(lVar22 + 0x6e) == cVar16" (identifier "bVar23") (= "=") (binary_expression "*(char *)(lVar22 + 0x6e) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x6e)" (* "*") (cast_expression "(char *)(lVar22 + 0x6e)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x6e)" (( "(") (binary_expression "lVar22 + 0x6e" (identifier "lVar22") (+ "+") (number_literal "0x6e")) () ")")))) (== "==") (identifier "cVar16"))) (; ";")) (if_statement "if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }\n    else {\n      bVar23 = false;\n    }" (if "if") (parenthesized_expression "((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16))" (( "(") (binary_expression "(bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)" (parenthesized_expression "(bVar23)" (( "(") (identifier "bVar23") () ")")) (|| "||") (parenthesized_expression "(*(char *)(lVar22 + 0x6f) == cVar16)" (( "(") (binary_expression "*(char *)(lVar22 + 0x6f) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x6f)" (* "*") (cast_expression "(char *)(lVar22 + 0x6f)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x6f)" (( "(") (binary_expression "lVar22 + 0x6f" (identifier "lVar22") (+ "+") (number_literal "0x6f")) () ")")))) (== "==") (identifier "cVar16")) () ")"))) () ")")) (compound_statement "{\n      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }\n    }" ({ "{") (if_statement "if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)) {\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }" (if "if") (parenthesized_expression "(((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16))" (( "(") (binary_expression "((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&\n         (*(char *)(lVar22 + 0x48) != cVar16)" (parenthesized_expression "((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16))" (( "(") (binary_expression "(cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)" (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(*(char *)(lVar22 + 0x49) != cVar16)" (( "(") (binary_expression "*(char *)(lVar22 + 0x49) != cVar16" (pointer_expression "*(char *)(lVar22 + 0x49)" (* "*") (cast_expression "(char *)(lVar22 + 0x49)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x49)" (( "(") (binary_expression "lVar22 + 0x49" (identifier "lVar22") (+ "+") (number_literal "0x49")) () ")")))) (!= "!=") (identifier "cVar16")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(lVar22 + 0x48) != cVar16)" (( "(") (binary_expression "*(char *)(lVar22 + 0x48) != cVar16" (pointer_expression "*(char *)(lVar22 + 0x48)" (* "*") (cast_expression "(char *)(lVar22 + 0x48)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x48)" (( "(") (binary_expression "lVar22 + 0x48" (identifier "lVar22") (+ "+") (number_literal "0x48")) () ")")))) (!= "!=") (identifier "cVar16")) () ")"))) () ")")) (compound_statement "{\n        if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }\n        bVar19 = false;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }\n        if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }\n        uVar14 = 0xffffffff;\n        if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }\n        cVar5 = *(char *)(lVar22 + 0x20);\n        local_b8 = 0xffffffff;\n      }" ({ "{") (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n          param_2[2] = param_2[2] + 1;\n        }\n        else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" (if "if") (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" (( "(") (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n          param_2[2] = param_2[2] + 1;\n        }" ({ "{") (expression_statement "param_2[2] = param_2[2] + 1;" (assignment_expression "param_2[2] = param_2[2] + 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "param_2[2] + 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" (else "else") (compound_statement "{\n          (**(code **)(*param_2 + 0x50))(param_2);\n        }" ({ "{") (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x50)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x50)" (* "*") (cast_expression "(code **)(*param_2 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x50)" (( "(") (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x50")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (} "}")))) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" (identifier "bVar19") (= "=") (false "false")) (; ";")) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) {\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }" (if "if") (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" (( "(") (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar19 = iVar8 == -1;\n          if (bVar19) {\n            param_2 = (long *)0x0;\n          }\n        }" ({ "{") (expression_statement "iVar8 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar8 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "iVar8") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "bVar19 = iVar8 == -1;" (assignment_expression "bVar19 = iVar8 == -1" (identifier "bVar19") (= "=") (binary_expression "iVar8 == -1" (identifier "iVar8") (== "==") (number_literal "-1"))) (; ";")) (if_statement "if (bVar19) {\n            param_2 = (long *)0x0;\n          }" (if "if") (parenthesized_expression "(bVar19)" (( "(") (identifier "bVar19") () ")")) (compound_statement "{\n            param_2 = (long *)0x0;\n          }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "bVar4 = local_c0 != (long *)0x0 && bVar25;" (assignment_expression "bVar4 = local_c0 != (long *)0x0 && bVar25" (identifier "bVar4") (= "=") (binary_expression "local_c0 != (long *)0x0 && bVar25" (binary_expression "local_c0 != (long *)0x0" (identifier "local_c0") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar25"))) (; ";")) (expression_statement "bVar24 = bVar25;" (assignment_expression "bVar24 = bVar25" (identifier "bVar24") (= "=") (identifier "bVar25")) (; ";")) (if_statement "if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }\n        }" ({ "{") (if_statement "if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }" (if "if") (parenthesized_expression "((ulong)local_c0[2] < (ulong)local_c0[3])" (( "(") (binary_expression "(ulong)local_c0[2] < (ulong)local_c0[3]" (cast_expression "(ulong)local_c0[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_c0[2]" (identifier "local_c0") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)local_c0[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_c0[3]" (identifier "local_c0") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n            bVar24 = false;\n          }" ({ "{") (expression_statement "bVar24 = false;" (assignment_expression "bVar24 = false" (identifier "bVar24") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }" (else "else") (compound_statement "{\n            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar8 == -1 && bVar4;\n          }" ({ "{") (expression_statement "iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0)" (identifier "iVar8") (= "=") (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" (( "(") (pointer_expression "**(code **)(*local_c0 + 0x48)" (* "*") (pointer_expression "*(code **)(*local_c0 + 0x48)" (* "*") (cast_expression "(code **)(*local_c0 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_c0 + 0x48)" (( "(") (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" (* "*") (identifier "local_c0")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(local_c0)" (( "(") (identifier "local_c0") () ")")))) (; ";")) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" (identifier "plVar2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar8 != -1) {\n              plVar2 = local_c0;\n            }" (if "if") (parenthesized_expression "(iVar8 != -1)" (( "(") (binary_expression "iVar8 != -1" (identifier "iVar8") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n              plVar2 = local_c0;\n            }" ({ "{") (expression_statement "plVar2 = local_c0;" (assignment_expression "plVar2 = local_c0" (identifier "plVar2") (= "=") (identifier "local_c0")) (; ";")) (} "}"))) (expression_statement "local_c0 = plVar2;" (assignment_expression "local_c0 = plVar2" (identifier "local_c0") (= "=") (identifier "plVar2")) (; ";")) (expression_statement "bVar24 = iVar8 == -1 && bVar4;" (assignment_expression "bVar24 = iVar8 == -1 && bVar4" (identifier "bVar24") (= "=") (binary_expression "iVar8 == -1 && bVar4" (binary_expression "iVar8 == -1" (identifier "iVar8") (== "==") (number_literal "-1")) (&& "&&") (identifier "bVar4"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (bVar24 == bVar19) {\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }" (if "if") (parenthesized_expression "(bVar24 == bVar19)" (( "(") (binary_expression "bVar24 == bVar19" (identifier "bVar24") (== "==") (identifier "bVar19")) () ")")) (compound_statement "{\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          bVar19 = false;\n          local_b8 = 0xffffffff;\n          iVar8 = 0;\n          goto LAB_00348669;\n        }" ({ "{") (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" (identifier "cVar5") (= "=") (pointer_expression "*(char *)(lVar22 + 0x20)" (* "*") (cast_expression "(char *)(lVar22 + 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x20)" (( "(") (binary_expression "lVar22 + 0x20" (identifier "lVar22") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "local_6b = true;" (assignment_expression "local_6b = true" (identifier "local_6b") (= "=") (true "true")) (; ";")) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" (identifier "bVar19") (= "=") (false "false")) (; ";")) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" (identifier "local_b8") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00348669;" (goto "goto") (statement_identifier "LAB_00348669") (; ";")) (} "}"))) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" (identifier "uVar14") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (param_2 != (long *)0x0) {\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(param_2 != (long *)0x0)" (( "(") (binary_expression "param_2 != (long *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }\n        }" ({ "{") (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n            uVar14 = (uint)*(byte *)param_2[2];\n          }\n          else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }" (if "if") (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" (( "(") (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(byte *)param_2[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n            uVar14 = (uint)*(byte *)param_2[2];\n          }" ({ "{") (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" (identifier "uVar14") (= "=") (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }" (else "else") (compound_statement "{\n            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n            if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }\n          }" ({ "{") (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "uVar14") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (uVar14 == 0xffffffff) {\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }" (if "if") (parenthesized_expression "(uVar14 == 0xffffffff)" (( "(") (binary_expression "uVar14 == 0xffffffff" (identifier "uVar14") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n              param_2 = (long *)0x0;\n              uVar14 = 0xffffffff;\n            }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" (identifier "uVar14") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" (identifier "cVar5") (= "=") (pointer_expression "*(char *)(lVar22 + 0x20)" (* "*") (cast_expression "(char *)(lVar22 + 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x20)" (( "(") (binary_expression "lVar22 + 0x20" (identifier "lVar22") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" (identifier "local_b8") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      bVar23 = false;\n    }" (else "else") (compound_statement "{\n      bVar23 = false;\n    }" ({ "{") (expression_statement "bVar23 = false;" (assignment_expression "bVar23 = false" (identifier "bVar23") (= "=") (false "false")) (; ";")) (} "}")))) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" (identifier "bVar19") (= "=") (false "false")) (; ";")) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    } while (bVar19);" (do "do") (compound_statement "{\n      uVar20 = (uint)local_b8;\n      cVar16 = (char)uVar14;\n      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;\n      bVar24 = bVar25;\n      if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }\n      uVar14 = 0xffffffff;\n      if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }\n      cVar5 = *(char *)(lVar22 + 0x20);\n      local_b8 = 0xffffffff;\n      uVar20 = 0xffffffff;\n    }" ({ "{") (expression_statement "uVar20 = (uint)local_b8;" (assignment_expression "uVar20 = (uint)local_b8" (identifier "uVar20") (= "=") (cast_expression "(uint)local_b8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_b8"))) (; ";")) (expression_statement "cVar16 = (char)uVar14;" (assignment_expression "cVar16 = (char)uVar14" (identifier "cVar16") (= "=") (cast_expression "(char)uVar14" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar14"))) (; ";")) (if_statement "if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)) break;" (if "if") (parenthesized_expression "(((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16))" (( "(") (binary_expression "((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||\n         (*(char *)(lVar22 + 0x48) == cVar16)" (parenthesized_expression "((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16))" (( "(") (binary_expression "(cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)" (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(lVar22 + 0x49) == cVar16)" (( "(") (binary_expression "*(char *)(lVar22 + 0x49) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x49)" (* "*") (cast_expression "(char *)(lVar22 + 0x49)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x49)" (( "(") (binary_expression "lVar22 + 0x49" (identifier "lVar22") (+ "+") (number_literal "0x49")) () ")")))) (== "==") (identifier "cVar16")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*(char *)(lVar22 + 0x48) == cVar16)" (( "(") (binary_expression "*(char *)(lVar22 + 0x48) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x48)" (* "*") (cast_expression "(char *)(lVar22 + 0x48)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x48)" (( "(") (binary_expression "lVar22 + 0x48" (identifier "lVar22") (+ "+") (number_literal "0x48")) () ")")))) (== "==") (identifier "cVar16")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar24 = bVar25;" (assignment_expression "bVar24 = bVar25" (identifier "bVar24") (= "=") (identifier "bVar25")) (; ";")) (if_statement "if (*(char *)(lVar22 + 0x72) == cVar16) {\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }\n      else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }" (if "if") (parenthesized_expression "(*(char *)(lVar22 + 0x72) == cVar16)" (( "(") (binary_expression "*(char *)(lVar22 + 0x72) == cVar16" (pointer_expression "*(char *)(lVar22 + 0x72)" (* "*") (cast_expression "(char *)(lVar22 + 0x72)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x72)" (( "(") (binary_expression "lVar22 + 0x72" (identifier "lVar22") (+ "+") (number_literal "0x72")) () ")")))) (== "==") (identifier "cVar16")) () ")")) (compound_statement "{\n        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);\n        if (!bVar4) goto LAB_003485d9;\n        bVar19 = iVar6 == 8 || uVar15 == 0;\n        if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }\n        iVar8 = 0;\n        iVar6 = 8;\n        uVar10 = param_2[2];\n        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;\nLAB_0034861c:\n        param_2[2] = uVar10 + 1;\n        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;\nLAB_00348635:\n        bVar4 = false;\n        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;\nLAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }\n      }" ({ "{") (expression_statement "bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);" (assignment_expression "bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U)" (identifier "bVar4") (= "=") (cast_expression "(bool)(iVar6 == 10 | bVar19 ^ 1U)" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (parenthesized_expression "(iVar6 == 10 | bVar19 ^ 1U)" (( "(") (binary_expression "iVar6 == 10 | bVar19 ^ 1U" (binary_expression "iVar6 == 10" (identifier "iVar6") (== "==") (number_literal "10")) (| "|") (binary_expression "bVar19 ^ 1U" (identifier "bVar19") (^ "^") (number_literal "1U"))) () ")")))) (; ";")) (if_statement "if (!bVar4) goto LAB_003485d9;" (if "if") (parenthesized_expression "(!bVar4)" (( "(") (unary_expression "!bVar4" (! "!") (identifier "bVar4")) () ")")) (goto_statement "goto LAB_003485d9;" (goto "goto") (statement_identifier "LAB_003485d9") (; ";"))) (expression_statement "bVar19 = iVar6 == 8 || uVar15 == 0;" (assignment_expression "bVar19 = iVar6 == 8 || uVar15 == 0" (identifier "bVar19") (= "=") (binary_expression "iVar6 == 8 || uVar15 == 0" (binary_expression "iVar6 == 8" (identifier "iVar6") (== "==") (number_literal "8")) (|| "||") (binary_expression "uVar15 == 0" (identifier "uVar15") (== "==") (number_literal "0")))) (; ";")) (if_statement "if (iVar6 != 8 && uVar15 != 0) {\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }" (if "if") (parenthesized_expression "(iVar6 != 8 && uVar15 != 0)" (( "(") (binary_expression "iVar6 != 8 && uVar15 != 0" (binary_expression "iVar6 != 8" (identifier "iVar6") (!= "!=") (number_literal "8")) (&& "&&") (binary_expression "uVar15 != 0" (identifier "uVar15") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n          iVar8 = iVar8 + 1;\n          bVar19 = bVar4;\n          goto LAB_0034860e;\n        }" ({ "{") (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar19 = bVar4;" (assignment_expression "bVar19 = bVar4" (identifier "bVar19") (= "=") (identifier "bVar4")) (; ";")) (goto_statement "goto LAB_0034860e;" (goto "goto") (statement_identifier "LAB_0034860e") (; ";")) (} "}"))) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" (identifier "iVar6") (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar10 = param_2[2];" (assignment_expression "uVar10 = param_2[2]" (identifier "uVar10") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;" (if "if") (parenthesized_expression "((ulong)param_2[3] <= uVar10)" (( "(") (binary_expression "(ulong)param_2[3] <= uVar10" (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (identifier "uVar10")) () ")")) (goto_statement "goto LAB_003488c0;" (goto "goto") (statement_identifier "LAB_003488c0") (; ";"))) (labeled_statement "LAB_0034861c:\n        param_2[2] = uVar10 + 1;" (statement_identifier "LAB_0034861c") (: ":") (expression_statement "param_2[2] = uVar10 + 1;" (assignment_expression "param_2[2] = uVar10 + 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;" (if "if") (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" (( "(") (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) () ")")) (goto_statement "goto LAB_003488f8;" (goto "goto") (statement_identifier "LAB_003488f8") (; ";"))) (labeled_statement "LAB_00348635:\n        bVar4 = false;" (statement_identifier "LAB_00348635") (: ":") (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";"))) (if_statement "if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;" (if "if") (parenthesized_expression "(local_c0 != (long *)0x0 && bVar25)" (( "(") (binary_expression "local_c0 != (long *)0x0 && bVar25" (binary_expression "local_c0 != (long *)0x0" (identifier "local_c0") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar25")) () ")")) (goto_statement "goto LAB_00348940;" (goto "goto") (statement_identifier "LAB_00348940") (; ";"))) (labeled_statement "LAB_00348646:\n        if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }" (statement_identifier "LAB_00348646") (: ":") (if_statement "if (bVar24 == bVar4) {\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }" (if "if") (parenthesized_expression "(bVar24 == bVar4)" (( "(") (binary_expression "bVar24 == bVar4" (identifier "bVar24") (== "==") (identifier "bVar4")) () ")")) (compound_statement "{\nLAB_0034864f:\n          local_b8 = 0xffffffff;\n          cVar5 = *(char *)(lVar22 + 0x20);\n          local_6b = true;\n          goto LAB_00348669;\n        }" ({ "{") (labeled_statement "LAB_0034864f:\n          local_b8 = 0xffffffff;" (statement_identifier "LAB_0034864f") (: ":") (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" (identifier "local_b8") (= "=") (number_literal "0xffffffff")) (; ";"))) (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" (identifier "cVar5") (= "=") (pointer_expression "*(char *)(lVar22 + 0x20)" (* "*") (cast_expression "(char *)(lVar22 + 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x20)" (( "(") (binary_expression "lVar22 + 0x20" (identifier "lVar22") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "local_6b = true;" (assignment_expression "local_6b = true" (identifier "local_6b") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_00348669;" (goto "goto") (statement_identifier "LAB_00348669") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }" (else "else") (compound_statement "{\n        if (!bVar19) break;\nLAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }\n        local_6b = iVar6 == 0x10 || uVar15 == 0;\n        if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }\n        iVar8 = 0;\n        iVar6 = 0x10;\n        bVar19 = false;\nLAB_0034860e:\n        uVar10 = param_2[2];\n        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;\nLAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);\n        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;\nLAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);\n        bVar4 = iVar7 == -1;\n        if (bVar4) {\n          param_2 = (long *)0x0;\n        }\n        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;\nLAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;\n        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }\n        if (bVar4 == false) goto LAB_0034864f;\n      }" ({ "{") (if_statement "if (!bVar19) break;" (if "if") (parenthesized_expression "(!bVar19)" (( "(") (unary_expression "!bVar19" (! "!") (identifier "bVar19")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_003485d9:\n        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }" (statement_identifier "LAB_003485d9") (: ":") (if_statement "if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }" (if "if") (parenthesized_expression "((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16))" (( "(") (binary_expression "(*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)" (parenthesized_expression "(*(char *)(lVar22 + 0x70) != cVar16)" (( "(") (binary_expression "*(char *)(lVar22 + 0x70) != cVar16" (pointer_expression "*(char *)(lVar22 + 0x70)" (* "*") (cast_expression "(char *)(lVar22 + 0x70)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x70)" (( "(") (binary_expression "lVar22 + 0x70" (identifier "lVar22") (+ "+") (number_literal "0x70")) () ")")))) (!= "!=") (identifier "cVar16")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(lVar22 + 0x71) != cVar16)" (( "(") (binary_expression "*(char *)(lVar22 + 0x71) != cVar16" (pointer_expression "*(char *)(lVar22 + 0x71)" (* "*") (cast_expression "(char *)(lVar22 + 0x71)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x71)" (( "(") (binary_expression "lVar22 + 0x71" (identifier "lVar22") (+ "+") (number_literal "0x71")) () ")")))) (!= "!=") (identifier "cVar16")) () ")"))) () ")")) (compound_statement "{\n          bVar19 = true;\n          local_6b = false;\n          goto LAB_00348669;\n        }" ({ "{") (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" (identifier "bVar19") (= "=") (true "true")) (; ";")) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" (identifier "local_6b") (= "=") (false "false")) (; ";")) (goto_statement "goto LAB_00348669;" (goto "goto") (statement_identifier "LAB_00348669") (; ";")) (} "}")))) (expression_statement "local_6b = iVar6 == 0x10 || uVar15 == 0;" (assignment_expression "local_6b = iVar6 == 0x10 || uVar15 == 0" (identifier "local_6b") (= "=") (binary_expression "iVar6 == 0x10 || uVar15 == 0" (binary_expression "iVar6 == 0x10" (identifier "iVar6") (== "==") (number_literal "0x10")) (|| "||") (binary_expression "uVar15 == 0" (identifier "uVar15") (== "==") (number_literal "0")))) (; ";")) (if_statement "if (iVar6 != 0x10 && uVar15 != 0) {\n          bVar19 = true;\n          goto LAB_00348678;\n        }" (if "if") (parenthesized_expression "(iVar6 != 0x10 && uVar15 != 0)" (( "(") (binary_expression "iVar6 != 0x10 && uVar15 != 0" (binary_expression "iVar6 != 0x10" (identifier "iVar6") (!= "!=") (number_literal "0x10")) (&& "&&") (binary_expression "uVar15 != 0" (identifier "uVar15") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n          bVar19 = true;\n          goto LAB_00348678;\n        }" ({ "{") (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" (identifier "bVar19") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_00348678;" (goto "goto") (statement_identifier "LAB_00348678") (; ";")) (} "}"))) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = 0x10;" (assignment_expression "iVar6 = 0x10" (identifier "iVar6") (= "=") (number_literal "0x10")) (; ";")) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" (identifier "bVar19") (= "=") (false "false")) (; ";")) (labeled_statement "LAB_0034860e:\n        uVar10 = param_2[2];" (statement_identifier "LAB_0034860e") (: ":") (expression_statement "uVar10 = param_2[2];" (assignment_expression "uVar10 = param_2[2]" (identifier "uVar10") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";"))) (if_statement "if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;" (if "if") (parenthesized_expression "(uVar10 < (ulong)param_2[3])" (( "(") (binary_expression "uVar10 < (ulong)param_2[3]" (identifier "uVar10") (< "<") (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (goto_statement "goto LAB_0034861c;" (goto "goto") (statement_identifier "LAB_0034861c") (; ";"))) (labeled_statement "LAB_003488c0:\n        (**(code **)(*param_2 + 0x50))(param_2);" (statement_identifier "LAB_003488c0") (: ":") (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x50)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x50)" (* "*") (cast_expression "(code **)(*param_2 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x50)" (( "(") (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x50")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";"))) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;" (if "if") (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" (( "(") (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (goto_statement "goto LAB_00348635;" (goto "goto") (statement_identifier "LAB_00348635") (; ";"))) (labeled_statement "LAB_003488f8:\n        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);" (statement_identifier "LAB_003488f8") (: ":") (expression_statement "iVar7 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar7 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "iVar7") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";"))) (expression_statement "bVar4 = iVar7 == -1;" (assignment_expression "bVar4 = iVar7 == -1" (identifier "bVar4") (= "=") (binary_expression "iVar7 == -1" (identifier "iVar7") (== "==") (number_literal "-1"))) (; ";")) (if_statement "if (bVar4) {\n          param_2 = (long *)0x0;\n        }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n          param_2 = (long *)0x0;\n        }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (if_statement "if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;" (if "if") (parenthesized_expression "(local_c0 == (long *)0x0 || !bVar25)" (( "(") (binary_expression "local_c0 == (long *)0x0 || !bVar25" (binary_expression "local_c0 == (long *)0x0" (identifier "local_c0") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (|| "||") (unary_expression "!bVar25" (! "!") (identifier "bVar25"))) () ")")) (goto_statement "goto LAB_00348646;" (goto "goto") (statement_identifier "LAB_00348646") (; ";"))) (labeled_statement "LAB_00348940:\n        bVar24 = local_c0 != (long *)0x0;" (statement_identifier "LAB_00348940") (: ":") (expression_statement "bVar24 = local_c0 != (long *)0x0;" (assignment_expression "bVar24 = local_c0 != (long *)0x0" (identifier "bVar24") (= "=") (binary_expression "local_c0 != (long *)0x0" (identifier "local_c0") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";"))) (if_statement "if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }" (if "if") (parenthesized_expression "((ulong)local_c0[3] <= (ulong)local_c0[2])" (( "(") (binary_expression "(ulong)local_c0[3] <= (ulong)local_c0[2]" (cast_expression "(ulong)local_c0[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_c0[3]" (identifier "local_c0") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)local_c0[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_c0[2]" (identifier "local_c0") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);\n          if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }\n          bVar24 = iVar7 == -1 && (bVar24 && bVar25);\n          goto LAB_00348646;\n        }" ({ "{") (expression_statement "iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0)" (identifier "iVar7") (= "=") (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" (( "(") (pointer_expression "**(code **)(*local_c0 + 0x48)" (* "*") (pointer_expression "*(code **)(*local_c0 + 0x48)" (* "*") (cast_expression "(code **)(*local_c0 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_c0 + 0x48)" (( "(") (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" (* "*") (identifier "local_c0")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(local_c0)" (( "(") (identifier "local_c0") () ")")))) (; ";")) (if_statement "if (iVar7 == -1) {\n            local_c0 = (long *)0x0;\n          }" (if "if") (parenthesized_expression "(iVar7 == -1)" (( "(") (binary_expression "iVar7 == -1" (identifier "iVar7") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            local_c0 = (long *)0x0;\n          }" ({ "{") (expression_statement "local_c0 = (long *)0x0;" (assignment_expression "local_c0 = (long *)0x0" (identifier "local_c0") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (expression_statement "bVar24 = iVar7 == -1 && (bVar24 && bVar25);" (assignment_expression "bVar24 = iVar7 == -1 && (bVar24 && bVar25)" (identifier "bVar24") (= "=") (binary_expression "iVar7 == -1 && (bVar24 && bVar25)" (binary_expression "iVar7 == -1" (identifier "iVar7") (== "==") (number_literal "-1")) (&& "&&") (parenthesized_expression "(bVar24 && bVar25)" (( "(") (binary_expression "bVar24 && bVar25" (identifier "bVar24") (&& "&&") (identifier "bVar25")) () ")")))) (; ";")) (goto_statement "goto LAB_00348646;" (goto "goto") (statement_identifier "LAB_00348646") (; ";")) (} "}"))) (if_statement "if (bVar4 == false) goto LAB_0034864f;" (if "if") (parenthesized_expression "(bVar4 == false)" (( "(") (binary_expression "bVar4 == false" (identifier "bVar4") (== "==") (false "false")) () ")")) (goto_statement "goto LAB_0034864f;" (goto "goto") (statement_identifier "LAB_0034864f") (; ";"))) (} "}")))) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" (identifier "uVar14") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (param_2 != (long *)0x0) {\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(param_2 != (long *)0x0)" (( "(") (binary_expression "param_2 != (long *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n      }" ({ "{") (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" (if "if") (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" (( "(") (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(byte *)param_2[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n          uVar14 = (uint)*(byte *)param_2[2];\n        }" ({ "{") (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" (identifier "uVar14") (= "=") (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" (else "else") (compound_statement "{\n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" ({ "{") (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "uVar14") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" (if "if") (parenthesized_expression "(uVar14 == 0xffffffff)" (( "(") (binary_expression "uVar14 == 0xffffffff" (identifier "uVar14") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" (identifier "uVar14") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "cVar5 = *(char *)(lVar22 + 0x20);" (assignment_expression "cVar5 = *(char *)(lVar22 + 0x20)" (identifier "cVar5") (= "=") (pointer_expression "*(char *)(lVar22 + 0x20)" (* "*") (cast_expression "(char *)(lVar22 + 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x20)" (( "(") (binary_expression "lVar22 + 0x20" (identifier "lVar22") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" (identifier "local_b8") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "uVar20 = 0xffffffff;" (assignment_expression "uVar20 = 0xffffffff" (identifier "uVar20") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar19)" (( "(") (identifier "bVar19") () ")")) (; ";")) (expression_statement "local_b8 = (ulong)uVar20;" (assignment_expression "local_b8 = (ulong)uVar20" (identifier "local_b8") (= "=") (cast_expression "(ulong)uVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar20"))) (; ";")) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" (identifier "local_6b") (= "=") (false "false")) (; ";")) (} "}")))) (labeled_statement "LAB_00348669:\n  local_a0 = 0x16;" (statement_identifier "LAB_00348669") (: ":") (expression_statement "local_a0 = 0x16;" (assignment_expression "local_a0 = 0x16" (identifier "local_a0") (= "=") (number_literal "0x16")) (; ";"))) (if_statement "if (iVar6 != 0x10) {\nLAB_00348678:\n    local_a0 = (ulong)iVar6;\n  }" (if "if") (parenthesized_expression "(iVar6 != 0x10)" (( "(") (binary_expression "iVar6 != 0x10" (identifier "iVar6") (!= "!=") (number_literal "0x10")) () ")")) (compound_statement "{\nLAB_00348678:\n    local_a0 = (ulong)iVar6;\n  }" ({ "{") (labeled_statement "LAB_00348678:\n    local_a0 = (ulong)iVar6;" (statement_identifier "LAB_00348678") (: ":") (expression_statement "local_a0 = (ulong)iVar6;" (assignment_expression "local_a0 = (ulong)iVar6" (identifier "local_a0") (= "=") (cast_expression "(ulong)iVar6" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "iVar6"))) (; ";"))) (} "}"))) (expression_statement "bVar21 = local_6b;" (assignment_expression "bVar21 = local_6b" (identifier "bVar21") (= "=") (identifier "local_6b")) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" (identifier "local_58") (= "=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) (; ";")) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (if_statement "if (cVar5 != '\0') {\n    FUN_002e1e10(&local_58,0x20);\n  }" (if "if") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    FUN_002e1e10(&local_58,0x20);\n  }" ({ "{") (expression_statement "FUN_002e1e10(&local_58,0x20);" (call_expression "FUN_002e1e10(&local_58,0x20)" (identifier "FUN_002e1e10") (argument_list "(&local_58,0x20)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (number_literal "0x20") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar18 = (ulong)iVar6;" (assignment_expression "uVar18 = (ulong)iVar6" (identifier "uVar18") (= "=") (cast_expression "(ulong)iVar6" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "iVar6"))) (; ";")) (expression_statement "bVar3 = *(byte *)(lVar22 + 0x88);" (assignment_expression "bVar3 = *(byte *)(lVar22 + 0x88)" (identifier "bVar3") (= "=") (pointer_expression "*(byte *)(lVar22 + 0x88)" (* "*") (cast_expression "(byte *)(lVar22 + 0x88)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x88)" (( "(") (binary_expression "lVar22 + 0x88" (identifier "lVar22") (+ "+") (number_literal "0x88")) () ")"))))) (; ";")) (expression_statement "uVar10 = 0x7fffffffffffffff;" (assignment_expression "uVar10 = 0x7fffffffffffffff" (identifier "uVar10") (= "=") (number_literal "0x7fffffffffffffff")) (; ";")) (if_statement "if (bVar23) {\n    uVar10 = 0x8000000000000000;\n  }" (if "if") (parenthesized_expression "(bVar23)" (( "(") (identifier "bVar23") () ")")) (compound_statement "{\n    uVar10 = 0x8000000000000000;\n  }" ({ "{") (expression_statement "uVar10 = 0x8000000000000000;" (assignment_expression "uVar10 = 0x8000000000000000" (identifier "uVar10") (= "=") (number_literal "0x8000000000000000")) (; ";")) (} "}"))) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" (identifier "uVar17") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (bVar3 == 0) {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_6a = 0;\n    local_6b = false;\n    local_a8 = 0;\n  }\n  else {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }" (if "if") (parenthesized_expression "(bVar3 == 0)" (( "(") (binary_expression "bVar3 == 0" (identifier "bVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_6a = 0;\n    local_6b = false;\n    local_a8 = 0;\n  }" ({ "{") (if_statement "if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(local_6b == false)" (( "(") (binary_expression "local_6b == false" (identifier "local_6b") (== "==") (false "false")) () ")")) (compound_statement "{\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" ({ "{") (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" (identifier "local_6a") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );" (do "do") (compound_statement "{\n        cVar5 = (char)uVar14;\n        iVar6 = (int)cVar5;\n        if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }\n        if (iVar6 == -1) goto LAB_003489c8;\n        bVar24 = bVar25;\n        if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      }" ({ "{") (expression_statement "cVar5 = (char)uVar14;" (assignment_expression "cVar5 = (char)uVar14" (identifier "cVar5") (= "=") (cast_expression "(char)uVar14" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar14"))) (; ";")) (expression_statement "iVar6 = (int)cVar5;" (assignment_expression "iVar6 = (int)cVar5" (identifier "iVar6") (= "=") (cast_expression "(int)cVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar5"))) (; ";")) (if_statement "if (local_a0 < 0xb) {\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }\n        else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }" (if "if") (parenthesized_expression "(local_a0 < 0xb)" (( "(") (binary_expression "local_a0 < 0xb" (identifier "local_a0") (< "<") (number_literal "0xb")) () ")")) (compound_statement "{\n          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;\nLAB_00348742:\n          iVar6 = iVar6 + -0x30;\n        }" ({ "{") (if_statement "if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;" (if "if") (parenthesized_expression "((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5))" (( "(") (binary_expression "(cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)" (parenthesized_expression "(cVar5 < '0')" (( "(") (binary_expression "cVar5 < '0'" (identifier "cVar5") (< "<") (char_literal "'0'" (' "'") (character "0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "((char)((char)local_a0 + '0') <= cVar5)" (( "(") (binary_expression "(char)((char)local_a0 + '0') <= cVar5" (cast_expression "(char)((char)local_a0 + '0')" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((char)local_a0 + '0')" (( "(") (binary_expression "(char)local_a0 + '0'" (cast_expression "(char)local_a0" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_a0")) (+ "+") (char_literal "'0'" (' "'") (character "0") (' "'"))) () ")"))) (<= "<=") (identifier "cVar5")) () ")"))) () ")")) (goto_statement "goto LAB_003489c8;" (goto "goto") (statement_identifier "LAB_003489c8") (; ";"))) (labeled_statement "LAB_00348742:\n          iVar6 = iVar6 + -0x30;" (statement_identifier "LAB_00348742") (: ":") (expression_statement "iVar6 = iVar6 + -0x30;" (assignment_expression "iVar6 = iVar6 + -0x30" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -0x30" (identifier "iVar6") (+ "+") (number_literal "-0x30"))) (; ";"))) (} "}")) (else_clause "else {\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }" (else "else") (compound_statement "{\n          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;\n          if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }\n        }" ({ "{") (if_statement "if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;" (if "if") (parenthesized_expression "((byte)(cVar5 - 0x30U) < 10)" (( "(") (binary_expression "(byte)(cVar5 - 0x30U) < 10" (call_expression "(byte)(cVar5 - 0x30U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar5 - 0x30U)" (( "(") (binary_expression "cVar5 - 0x30U" (identifier "cVar5") (- "-") (number_literal "0x30U")) () ")"))) (< "<") (number_literal "10")) () ")")) (goto_statement "goto LAB_00348742;" (goto "goto") (statement_identifier "LAB_00348742") (; ";"))) (if_statement "if ((byte)(cVar5 + 0x9fU) < 6) {\n            iVar6 = iVar6 + -0x57;\n          }\n          else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }" (if "if") (parenthesized_expression "((byte)(cVar5 + 0x9fU) < 6)" (( "(") (binary_expression "(byte)(cVar5 + 0x9fU) < 6" (call_expression "(byte)(cVar5 + 0x9fU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar5 + 0x9fU)" (( "(") (binary_expression "cVar5 + 0x9fU" (identifier "cVar5") (+ "+") (number_literal "0x9fU")) () ")"))) (< "<") (number_literal "6")) () ")")) (compound_statement "{\n            iVar6 = iVar6 + -0x57;\n          }" ({ "{") (expression_statement "iVar6 = iVar6 + -0x57;" (assignment_expression "iVar6 = iVar6 + -0x57" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -0x57" (identifier "iVar6") (+ "+") (number_literal "-0x57"))) (; ";")) (} "}")) (else_clause "else {\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }" (else "else") (compound_statement "{\n            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;\n            iVar6 = iVar6 + -0x37;\n          }" ({ "{") (if_statement "if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;" (if "if") (parenthesized_expression "(5 < (byte)(cVar5 + 0xbfU))" (( "(") (binary_expression "5 < (byte)(cVar5 + 0xbfU)" (number_literal "5") (< "<") (call_expression "(byte)(cVar5 + 0xbfU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar5 + 0xbfU)" (( "(") (binary_expression "cVar5 + 0xbfU" (identifier "cVar5") (+ "+") (number_literal "0xbfU")) () ")")))) () ")")) (goto_statement "goto LAB_003489c8;" (goto "goto") (statement_identifier "LAB_003489c8") (; ";"))) (expression_statement "iVar6 = iVar6 + -0x37;" (assignment_expression "iVar6 = iVar6 + -0x37" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -0x37" (identifier "iVar6") (+ "+") (number_literal "-0x37"))) (; ";")) (} "}")))) (} "}")))) (if_statement "if (iVar6 == -1) goto LAB_003489c8;" (if "if") (parenthesized_expression "(iVar6 == -1)" (( "(") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_003489c8;" (goto "goto") (statement_identifier "LAB_003489c8") (; ";"))) (expression_statement "bVar24 = bVar25;" (assignment_expression "bVar24 = bVar25" (identifier "bVar24") (= "=") (identifier "bVar25")) (; ";")) (if_statement "if (uVar10 / uVar18 < local_a8) {\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }\n        else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }" (if "if") (parenthesized_expression "(uVar10 / uVar18 < local_a8)" (( "(") (binary_expression "uVar10 / uVar18 < local_a8" (binary_expression "uVar10 / uVar18" (identifier "uVar10") (/ "/") (identifier "uVar18")) (< "<") (identifier "local_a8")) () ")")) (compound_statement "{\n          local_6a = 1;\n          uVar17 = param_2[2];\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;\nLAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);\n          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;\nLAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n          bVar4 = iVar6 == -1;\n          if (bVar4) {\n            param_2 = (long *)0x0;\n          }\n          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;\nLAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;\n        }" ({ "{") (expression_statement "local_6a = 1;" (assignment_expression "local_6a = 1" (identifier "local_6a") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar17 = param_2[2];" (assignment_expression "uVar17 = param_2[2]" (identifier "uVar17") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;" (if "if") (parenthesized_expression "(uVar17 < (ulong)param_2[3])" (( "(") (binary_expression "uVar17 < (ulong)param_2[3]" (identifier "uVar17") (< "<") (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (goto_statement "goto LAB_00348793;" (goto "goto") (statement_identifier "LAB_00348793") (; ";"))) (labeled_statement "LAB_00348ac3:\n                    \n          (**(code **)(*param_2 + 0x50))(param_2);" (statement_identifier "LAB_00348ac3") (: ":") (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x50)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x50)" (* "*") (cast_expression "(code **)(*param_2 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x50)" (( "(") (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x50")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";"))) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;" (if "if") (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" (( "(") (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (goto_statement "goto LAB_003487ac;" (goto "goto") (statement_identifier "LAB_003487ac") (; ";"))) (labeled_statement "LAB_00348ae0:\n          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" (statement_identifier "LAB_00348ae0") (: ":") (expression_statement "iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar6 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "iVar6") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";"))) (expression_statement "bVar4 = iVar6 == -1;" (assignment_expression "bVar4 = iVar6 == -1" (identifier "bVar4") (= "=") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1"))) (; ";")) (if_statement "if (bVar4) {\n            param_2 = (long *)0x0;\n          }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n            param_2 = (long *)0x0;\n          }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (if_statement "if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;" (if "if") (parenthesized_expression "(local_c0 != (long *)0x0 && bVar25)" (( "(") (binary_expression "local_c0 != (long *)0x0 && bVar25" (binary_expression "local_c0 != (long *)0x0" (identifier "local_c0") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar25")) () ")")) (goto_statement "goto LAB_00348b10;" (goto "goto") (statement_identifier "LAB_00348b10") (; ";"))) (labeled_statement "LAB_003487c0:\n          if (bVar24 == bVar4) goto LAB_003487c9;" (statement_identifier "LAB_003487c0") (: ":") (if_statement "if (bVar24 == bVar4) goto LAB_003487c9;" (if "if") (parenthesized_expression "(bVar24 == bVar4)" (( "(") (binary_expression "bVar24 == bVar4" (identifier "bVar24") (== "==") (identifier "bVar4")) () ")")) (goto_statement "goto LAB_003487c9;" (goto "goto") (statement_identifier "LAB_003487c9") (; ";")))) (} "}")) (else_clause "else {\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }" (else "else") (compound_statement "{\n          uVar17 = local_a8 * uVar18;\n          local_a8 = (long)iVar6 + uVar17;\n          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n          uVar17 = param_2[2];\n          iVar8 = iVar8 + 1;\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;\nLAB_00348793:\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;\nLAB_003487ac:\n          bVar4 = false;\n          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;\nLAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;\n          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }\n          if (bVar4 == false) goto LAB_003487c9;\n        }" ({ "{") (expression_statement "uVar17 = local_a8 * uVar18;" (assignment_expression "uVar17 = local_a8 * uVar18" (identifier "uVar17") (= "=") (binary_expression "local_a8 * uVar18" (identifier "local_a8") (* "*") (identifier "uVar18"))) (; ";")) (expression_statement "local_a8 = (long)iVar6 + uVar17;" (assignment_expression "local_a8 = (long)iVar6 + uVar17" (identifier "local_a8") (= "=") (binary_expression "(long)iVar6 + uVar17" (cast_expression "(long)iVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar6")) (+ "+") (identifier "uVar17"))) (; ";")) (expression_statement "local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;" (assignment_expression "local_6a = local_6a | uVar10 - (long)iVar6 < uVar17" (identifier "local_6a") (= "=") (binary_expression "local_6a | uVar10 - (long)iVar6 < uVar17" (identifier "local_6a") (| "|") (binary_expression "uVar10 - (long)iVar6 < uVar17" (binary_expression "uVar10 - (long)iVar6" (identifier "uVar10") (- "-") (cast_expression "(long)iVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar6"))) (< "<") (identifier "uVar17")))) (; ";")) (expression_statement "uVar17 = param_2[2];" (assignment_expression "uVar17 = param_2[2]" (identifier "uVar17") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;" (if "if") (parenthesized_expression "((ulong)param_2[3] <= uVar17)" (( "(") (binary_expression "(ulong)param_2[3] <= uVar17" (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (identifier "uVar17")) () ")")) (goto_statement "goto LAB_00348ac3;" (goto "goto") (statement_identifier "LAB_00348ac3") (; ";"))) (labeled_statement "LAB_00348793:\n          param_2[2] = uVar17 + 1;" (statement_identifier "LAB_00348793") (: ":") (expression_statement "param_2[2] = uVar17 + 1;" (assignment_expression "param_2[2] = uVar17 + 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;" (if "if") (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" (( "(") (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) () ")")) (goto_statement "goto LAB_00348ae0;" (goto "goto") (statement_identifier "LAB_00348ae0") (; ";"))) (labeled_statement "LAB_003487ac:\n          bVar4 = false;" (statement_identifier "LAB_003487ac") (: ":") (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";"))) (if_statement "if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;" (if "if") (parenthesized_expression "(local_c0 == (long *)0x0 || !bVar25)" (( "(") (binary_expression "local_c0 == (long *)0x0 || !bVar25" (binary_expression "local_c0 == (long *)0x0" (identifier "local_c0") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (|| "||") (unary_expression "!bVar25" (! "!") (identifier "bVar25"))) () ")")) (goto_statement "goto LAB_003487c0;" (goto "goto") (statement_identifier "LAB_003487c0") (; ";"))) (labeled_statement "LAB_00348b10:\n          bVar24 = local_c0 != (long *)0x0;" (statement_identifier "LAB_00348b10") (: ":") (expression_statement "bVar24 = local_c0 != (long *)0x0;" (assignment_expression "bVar24 = local_c0 != (long *)0x0" (identifier "bVar24") (= "=") (binary_expression "local_c0 != (long *)0x0" (identifier "local_c0") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";"))) (if_statement "if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }" (if "if") (parenthesized_expression "((ulong)local_c0[3] <= (ulong)local_c0[2])" (( "(") (binary_expression "(ulong)local_c0[3] <= (ulong)local_c0[2]" (cast_expression "(ulong)local_c0[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_c0[3]" (identifier "local_c0") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)local_c0[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_c0[2]" (identifier "local_c0") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n                    \n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            local_c0 = plVar2;\n            bVar24 = iVar6 == -1 && (bVar24 && bVar25);\n            goto LAB_003487c0;\n          }" ({ "{") (expression_statement "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0)" (identifier "iVar6") (= "=") (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" (( "(") (pointer_expression "**(code **)(*local_c0 + 0x48)" (* "*") (pointer_expression "*(code **)(*local_c0 + 0x48)" (* "*") (cast_expression "(code **)(*local_c0 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_c0 + 0x48)" (( "(") (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" (* "*") (identifier "local_c0")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(local_c0)" (( "(") (identifier "local_c0") () ")")))) (; ";")) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" (identifier "plVar2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }" (if "if") (parenthesized_expression "(iVar6 != -1)" (( "(") (binary_expression "iVar6 != -1" (identifier "iVar6") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n              plVar2 = local_c0;\n            }" ({ "{") (expression_statement "plVar2 = local_c0;" (assignment_expression "plVar2 = local_c0" (identifier "plVar2") (= "=") (identifier "local_c0")) (; ";")) (} "}"))) (expression_statement "local_c0 = plVar2;" (assignment_expression "local_c0 = plVar2" (identifier "local_c0") (= "=") (identifier "plVar2")) (; ";")) (expression_statement "bVar24 = iVar6 == -1 && (bVar24 && bVar25);" (assignment_expression "bVar24 = iVar6 == -1 && (bVar24 && bVar25)" (identifier "bVar24") (= "=") (binary_expression "iVar6 == -1 && (bVar24 && bVar25)" (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) (&& "&&") (parenthesized_expression "(bVar24 && bVar25)" (( "(") (binary_expression "bVar24 && bVar25" (identifier "bVar24") (&& "&&") (identifier "bVar25")) () ")")))) (; ";")) (goto_statement "goto LAB_003487c0;" (goto "goto") (statement_identifier "LAB_003487c0") (; ";")) (} "}"))) (if_statement "if (bVar4 == false) goto LAB_003487c9;" (if "if") (parenthesized_expression "(bVar4 == false)" (( "(") (binary_expression "bVar4 == false" (identifier "bVar4") (== "==") (false "false")) () ")")) (goto_statement "goto LAB_003487c9;" (goto "goto") (statement_identifier "LAB_003487c9") (; ";"))) (} "}")))) (if_statement "if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" (if "if") (parenthesized_expression "(param_2 == (long *)0x0)" (( "(") (binary_expression "param_2 == (long *)0x0" (identifier "param_2") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          uVar14 = 0xffffffff;\n        }" ({ "{") (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" (identifier "uVar14") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (else_clause "else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" (else "else") (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" (if "if") (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" (( "(") (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(byte *)param_2[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n          uVar14 = (uint)*(byte *)param_2[2];\n        }" ({ "{") (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" (identifier "uVar14") (= "=") (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" (else "else") (compound_statement "{\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" ({ "{") (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "uVar14") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" (if "if") (parenthesized_expression "(uVar14 == 0xffffffff)" (( "(") (binary_expression "uVar14 == 0xffffffff" (identifier "uVar14") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" (identifier "uVar14") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (} "}")))))) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" (identifier "local_b8") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" (identifier "local_6a") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" (identifier "local_6b") (= "=") (false "false")) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }" (else "else") (compound_statement "{\n    if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }\n    local_a8 = 0;\n    local_6a = 0;\n    local_6b = false;\n  }" ({ "{") (if_statement "if (local_6b == false) {\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(local_6b == false)" (( "(") (binary_expression "local_6b == false" (identifier "local_6b") (== "==") (false "false")) () ")")) (compound_statement "{\n      local_6a = 0;\n      local_a8 = 0;\n      do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );\n    }" ({ "{") (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" (identifier "local_6a") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      } while( true );" (do "do") (compound_statement "{\n        uVar17 = local_50;\n        cVar5 = (char)uVar14;\n        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }\n        bVar4 = local_c0 != (long *)0x0 && bVar25;\n        bVar24 = bVar25;\n        if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }\n        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;\n        if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }\n        local_b8 = 0xffffffff;\n      }" ({ "{") (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" (identifier "uVar17") (= "=") (identifier "local_50")) (; ";")) (expression_statement "cVar5 = (char)uVar14;" (assignment_expression "cVar5 = (char)uVar14" (identifier "cVar5") (= "=") (cast_expression "(char)uVar14" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar14"))) (; ";")) (if_statement "if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }\n        else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }" (if "if") (parenthesized_expression "((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5))" (( "(") (binary_expression "(*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)" (parenthesized_expression "(*(byte *)(lVar22 + 0x20) == 0)" (( "(") (binary_expression "*(byte *)(lVar22 + 0x20) == 0" (pointer_expression "*(byte *)(lVar22 + 0x20)" (* "*") (cast_expression "(byte *)(lVar22 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x20)" (( "(") (binary_expression "lVar22 + 0x20" (identifier "lVar22") (+ "+") (number_literal "0x20")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(char *)(lVar22 + 0x49) != cVar5)" (( "(") (binary_expression "*(char *)(lVar22 + 0x49) != cVar5" (pointer_expression "*(char *)(lVar22 + 0x49)" (* "*") (cast_expression "(char *)(lVar22 + 0x49)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x49)" (( "(") (binary_expression "lVar22 + 0x49" (identifier "lVar22") (+ "+") (number_literal "0x49")) () ")")))) (!= "!=") (identifier "cVar5")) () ")"))) () ")")) (compound_statement "{\n          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;\n          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);\n          if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }\n          if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }\n          uVar17 = param_2[2];\n          local_6a = bVar3;\n          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;\nLAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);\n          local_b8._0_1_ = 0;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }\n        }" ({ "{") (if_statement "if ((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             ) goto LAB_003489c8;" (if "if") (parenthesized_expression "((cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)\n             )" (( "(") (binary_expression "(cVar5 == *(char *)(lVar22 + 0x48)) ||\n             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)" (parenthesized_expression "(cVar5 == *(char *)(lVar22 + 0x48))" (( "(") (binary_expression "cVar5 == *(char *)(lVar22 + 0x48)" (identifier "cVar5") (== "==") (pointer_expression "*(char *)(lVar22 + 0x48)" (* "*") (cast_expression "(char *)(lVar22 + 0x48)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x48)" (( "(") (binary_expression "lVar22 + 0x48" (identifier "lVar22") (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)" (( "(") (comma_expression "pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0" (assignment_expression "pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0)" (identifier "pvVar11") (= "=") (call_expression "memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0)" (identifier "memchr") (argument_list "((void *)(lVar22 + 0x72),(int)cVar5,local_a0)" (( "(") (cast_expression "(void *)(lVar22 + 0x72)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x72)" (( "(") (binary_expression "lVar22 + 0x72" (identifier "lVar22") (+ "+") (number_literal "0x72")) () ")"))) (, ",") (cast_expression "(int)cVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar5")) (, ",") (identifier "local_a0") () ")")))) (, ",") (binary_expression "pvVar11 == (void *)0x0" (identifier "pvVar11") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (goto_statement "goto LAB_003489c8;" (goto "goto") (statement_identifier "LAB_003489c8") (; ";"))) (expression_statement "iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);" (assignment_expression "iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72)" (identifier "iVar6") (= "=") (binary_expression "(int)pvVar11 - (int)(void *)(lVar22 + 0x72)" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (- "-") (cast_expression "(int)(void *)(lVar22 + 0x72)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(void *)(lVar22 + 0x72)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x72)" (( "(") (binary_expression "lVar22 + 0x72" (identifier "lVar22") (+ "+") (number_literal "0x72")) () ")")))))) (; ";")) (if_statement "if (0xf < iVar6) {\n            iVar6 = iVar6 + -6;\n          }" (if "if") (parenthesized_expression "(0xf < iVar6)" (( "(") (binary_expression "0xf < iVar6" (number_literal "0xf") (< "<") (identifier "iVar6")) () ")")) (compound_statement "{\n            iVar6 = iVar6 + -6;\n          }" ({ "{") (expression_statement "iVar6 = iVar6 + -6;" (assignment_expression "iVar6 = iVar6 + -6" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -6" (identifier "iVar6") (+ "+") (number_literal "-6"))) (; ";")) (} "}"))) (if_statement "if (local_a8 <= uVar10 / uVar18) {\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }" (if "if") (parenthesized_expression "(local_a8 <= uVar10 / uVar18)" (( "(") (binary_expression "local_a8 <= uVar10 / uVar18" (identifier "local_a8") (<= "<=") (binary_expression "uVar10 / uVar18" (identifier "uVar10") (/ "/") (identifier "uVar18"))) () ")")) (compound_statement "{\n            uVar17 = local_a8 * uVar18;\n            local_a8 = (long)iVar6 + uVar17;\n            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;\n            iVar8 = iVar8 + 1;\n            goto LAB_00348c3c;\n          }" ({ "{") (expression_statement "uVar17 = local_a8 * uVar18;" (assignment_expression "uVar17 = local_a8 * uVar18" (identifier "uVar17") (= "=") (binary_expression "local_a8 * uVar18" (identifier "local_a8") (* "*") (identifier "uVar18"))) (; ";")) (expression_statement "local_a8 = (long)iVar6 + uVar17;" (assignment_expression "local_a8 = (long)iVar6 + uVar17" (identifier "local_a8") (= "=") (binary_expression "(long)iVar6 + uVar17" (cast_expression "(long)iVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar6")) (+ "+") (identifier "uVar17"))) (; ";")) (expression_statement "local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;" (assignment_expression "local_6a = local_6a | uVar10 - (long)iVar6 < uVar17" (identifier "local_6a") (= "=") (binary_expression "local_6a | uVar10 - (long)iVar6 < uVar17" (identifier "local_6a") (| "|") (binary_expression "uVar10 - (long)iVar6 < uVar17" (binary_expression "uVar10 - (long)iVar6" (identifier "uVar10") (- "-") (cast_expression "(long)iVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar6"))) (< "<") (identifier "uVar17")))) (; ";")) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_00348c3c;" (goto "goto") (statement_identifier "LAB_00348c3c") (; ";")) (} "}"))) (expression_statement "uVar17 = param_2[2];" (assignment_expression "uVar17 = param_2[2]" (identifier "uVar17") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_6a = bVar3;" (assignment_expression "local_6a = bVar3" (identifier "local_6a") (= "=") (identifier "bVar3")) (; ";")) (if_statement "if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;" (if "if") (parenthesized_expression "(uVar17 < (ulong)param_2[3])" (( "(") (binary_expression "uVar17 < (ulong)param_2[3]" (identifier "uVar17") (< "<") (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (goto_statement "goto LAB_00348c46;" (goto "goto") (statement_identifier "LAB_00348c46") (; ";"))) (labeled_statement "LAB_00348c9f:\n          (**(code **)(*param_2 + 0x50))(param_2);" (statement_identifier "LAB_00348c9f") (: ":") (expression_statement "(**(code **)(*param_2 + 0x50))(param_2);" (call_expression "(**(code **)(*param_2 + 0x50))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x50))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x50)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x50)" (* "*") (cast_expression "(code **)(*param_2 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x50)" (( "(") (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x50")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";"))) (expression_statement "local_b8._0_1_ = 0;" (assignment_expression "local_b8._0_1_ = 0" (field_expression "local_b8._0_1_" (identifier "local_b8") (. ".") (field_identifier "_0_1_")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) {\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }" (if "if") (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" (( "(") (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\nLAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);\n            local_b8._0_1_ = 0;\n            if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }\n          }" ({ "{") (labeled_statement "LAB_00348cc0:\n            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" (statement_identifier "LAB_00348cc0") (: ":") (expression_statement "iVar6 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "iVar6 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "iVar6") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";"))) (expression_statement "local_b8._0_1_ = 0;" (assignment_expression "local_b8._0_1_ = 0" (field_expression "local_b8._0_1_" (identifier "local_b8") (. ".") (field_identifier "_0_1_")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar6 == -1) {\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }" (if "if") (parenthesized_expression "(iVar6 == -1)" (( "(") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              param_2 = (long *)0x0;\n              local_b8._0_1_ = bVar3;\n            }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_b8._0_1_ = bVar3;" (assignment_expression "local_b8._0_1_ = bVar3" (field_expression "local_b8._0_1_" (identifier "local_b8") (. ".") (field_identifier "_0_1_")) (= "=") (identifier "bVar3")) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }" (else "else") (compound_statement "{\n          if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }\n          uVar1 = local_50 + 1;\n          if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }\n          if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }\n          local_b0 = (undefined1)iVar8;\n          iVar8 = 0;\n          local_58[uVar17] = local_b0;\n          local_58[uVar1] = 0;\n          local_50 = uVar1;\nLAB_00348c3c:\n          uVar17 = param_2[2];\n          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;\nLAB_00348c46:\n          local_b8._0_1_ = 0;\n          param_2[2] = uVar17 + 1;\n          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;\n        }" ({ "{") (if_statement "if (iVar8 == 0) {\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            bVar21 = 0;\n            local_6b = (bool)*(byte *)(lVar22 + 0x20);\n            goto joined_r0x003487e4;\n          }" ({ "{") (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" (identifier "bVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_6b = (bool)*(byte *)(lVar22 + 0x20);" (assignment_expression "local_6b = (bool)*(byte *)(lVar22 + 0x20)" (identifier "local_6b") (= "=") (cast_expression "(bool)*(byte *)(lVar22 + 0x20)" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (pointer_expression "*(byte *)(lVar22 + 0x20)" (* "*") (cast_expression "(byte *)(lVar22 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x20)" (( "(") (binary_expression "lVar22 + 0x20" (identifier "lVar22") (+ "+") (number_literal "0x20")) () ")")))))) (; ";")) (goto_statement "goto joined_r0x003487e4;" (goto "goto") (statement_identifier "joined_r0x003487e4") (; ";")) (} "}"))) (expression_statement "uVar1 = local_50 + 1;" (assignment_expression "uVar1 = local_50 + 1" (identifier "uVar1") (= "=") (binary_expression "local_50 + 1" (identifier "local_50") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_58 == &local_48) {\n            uVar13 = 0xf;\n          }\n          else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }" (if "if") (parenthesized_expression "(local_58 == &local_48)" (( "(") (binary_expression "local_58 == &local_48" (identifier "local_58") (== "==") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) () ")")) (compound_statement "{\n            uVar13 = 0xf;\n          }" ({ "{") (expression_statement "uVar13 = 0xf;" (assignment_expression "uVar13 = 0xf" (identifier "uVar13") (= "=") (number_literal "0xf")) (; ";")) (} "}")) (else_clause "else {\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }" (else "else") (compound_statement "{\n            uVar13 = CONCAT71(uStack_47,local_48);\n          }" ({ "{") (expression_statement "uVar13 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar13 = CONCAT71(uStack_47,local_48)" (identifier "uVar13") (= "=") (call_expression "CONCAT71(uStack_47,local_48)" (identifier "CONCAT71") (argument_list "(uStack_47,local_48)" (( "(") (identifier "uStack_47") (, ",") (identifier "local_48") () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar13 < uVar1) {\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }" (if "if") (parenthesized_expression "(uVar13 < uVar1)" (( "(") (binary_expression "uVar13 < uVar1" (identifier "uVar13") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n            FUN_002e1960(&local_58,local_50,0,0,1);\n          }" ({ "{") (expression_statement "FUN_002e1960(&local_58,local_50,0,0,1);" (call_expression "FUN_002e1960(&local_58,local_50,0,0,1)" (identifier "FUN_002e1960") (argument_list "(&local_58,local_50,0,0,1)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "local_50") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (expression_statement "local_b0 = (undefined1)iVar8;" (assignment_expression "local_b0 = (undefined1)iVar8" (identifier "local_b0") (= "=") (cast_expression "(undefined1)iVar8" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (identifier "iVar8"))) (; ";")) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_58[uVar17] = local_b0;" (assignment_expression "local_58[uVar17] = local_b0" (subscript_expression "local_58[uVar17]" (identifier "local_58") ([ "[") (identifier "uVar17") (] "]")) (= "=") (identifier "local_b0")) (; ";")) (expression_statement "local_58[uVar1] = 0;" (assignment_expression "local_58[uVar1] = 0" (subscript_expression "local_58[uVar1]" (identifier "local_58") ([ "[") (identifier "uVar1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_50 = uVar1;" (assignment_expression "local_50 = uVar1" (identifier "local_50") (= "=") (identifier "uVar1")) (; ";")) (labeled_statement "LAB_00348c3c:\n          uVar17 = param_2[2];" (statement_identifier "LAB_00348c3c") (: ":") (expression_statement "uVar17 = param_2[2];" (assignment_expression "uVar17 = param_2[2]" (identifier "uVar17") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";"))) (if_statement "if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;" (if "if") (parenthesized_expression "((ulong)param_2[3] <= uVar17)" (( "(") (binary_expression "(ulong)param_2[3] <= uVar17" (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (identifier "uVar17")) () ")")) (goto_statement "goto LAB_00348c9f;" (goto "goto") (statement_identifier "LAB_00348c9f") (; ";"))) (labeled_statement "LAB_00348c46:\n          local_b8._0_1_ = 0;" (statement_identifier "LAB_00348c46") (: ":") (expression_statement "local_b8._0_1_ = 0;" (assignment_expression "local_b8._0_1_ = 0" (field_expression "local_b8._0_1_" (identifier "local_b8") (. ".") (field_identifier "_0_1_")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "param_2[2] = uVar17 + 1;" (assignment_expression "param_2[2] = uVar17 + 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;" (if "if") (parenthesized_expression "((ulong)param_2[3] <= (ulong)param_2[2])" (( "(") (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) () ")")) (goto_statement "goto LAB_00348cc0;" (goto "goto") (statement_identifier "LAB_00348cc0") (; ";"))) (} "}")))) (expression_statement "bVar4 = local_c0 != (long *)0x0 && bVar25;" (assignment_expression "bVar4 = local_c0 != (long *)0x0 && bVar25" (identifier "bVar4") (= "=") (binary_expression "local_c0 != (long *)0x0 && bVar25" (binary_expression "local_c0 != (long *)0x0" (identifier "local_c0") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar25"))) (; ";")) (expression_statement "bVar24 = bVar25;" (assignment_expression "bVar24 = bVar25" (identifier "bVar24") (= "=") (identifier "bVar25")) (; ";")) (if_statement "if (bVar4) {\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }\n        }" ({ "{") (if_statement "if ((ulong)local_c0[2] < (ulong)local_c0[3]) {\n            bVar24 = false;\n          }\n          else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }" (if "if") (parenthesized_expression "((ulong)local_c0[2] < (ulong)local_c0[3])" (( "(") (binary_expression "(ulong)local_c0[2] < (ulong)local_c0[3]" (cast_expression "(ulong)local_c0[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_c0[2]" (identifier "local_c0") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)local_c0[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_c0[3]" (identifier "local_c0") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n            bVar24 = false;\n          }" ({ "{") (expression_statement "bVar24 = false;" (assignment_expression "bVar24 = false" (identifier "bVar24") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }" (else "else") (compound_statement "{\n            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);\n            plVar2 = (long *)0x0;\n            if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }\n            bVar24 = iVar6 == -1 && bVar4;\n            local_c0 = plVar2;\n          }" ({ "{") (expression_statement "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);" (assignment_expression "iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0)" (identifier "iVar6") (= "=") (call_expression "(**(code **)(*local_c0 + 0x48))(local_c0)" (parenthesized_expression "(**(code **)(*local_c0 + 0x48))" (( "(") (pointer_expression "**(code **)(*local_c0 + 0x48)" (* "*") (pointer_expression "*(code **)(*local_c0 + 0x48)" (* "*") (cast_expression "(code **)(*local_c0 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_c0 + 0x48)" (( "(") (binary_expression "*local_c0 + 0x48" (pointer_expression "*local_c0" (* "*") (identifier "local_c0")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(local_c0)" (( "(") (identifier "local_c0") () ")")))) (; ";")) (expression_statement "plVar2 = (long *)0x0;" (assignment_expression "plVar2 = (long *)0x0" (identifier "plVar2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar6 != -1) {\n              plVar2 = local_c0;\n            }" (if "if") (parenthesized_expression "(iVar6 != -1)" (( "(") (binary_expression "iVar6 != -1" (identifier "iVar6") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n              plVar2 = local_c0;\n            }" ({ "{") (expression_statement "plVar2 = local_c0;" (assignment_expression "plVar2 = local_c0" (identifier "plVar2") (= "=") (identifier "local_c0")) (; ";")) (} "}"))) (expression_statement "bVar24 = iVar6 == -1 && bVar4;" (assignment_expression "bVar24 = iVar6 == -1 && bVar4" (identifier "bVar24") (= "=") (binary_expression "iVar6 == -1 && bVar4" (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) (&& "&&") (identifier "bVar4"))) (; ";")) (expression_statement "local_c0 = plVar2;" (assignment_expression "local_c0 = plVar2" (identifier "local_c0") (= "=") (identifier "plVar2")) (; ";")) (} "}")))) (} "}"))) (if_statement "if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;" (if "if") (parenthesized_expression "((bool)(byte)local_b8 == bVar24)" (( "(") (binary_expression "(bool)(byte)local_b8 == bVar24" (cast_expression "(bool)(byte)local_b8" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (cast_expression "(byte)local_b8" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_b8"))) (== "==") (identifier "bVar24")) () ")")) (goto_statement "goto code_r0x00348c77;" (goto "goto") (statement_identifier "code_r0x00348c77") (; ";"))) (if_statement "if (param_2 == (long *)0x0) {\n          uVar14 = 0xffffffff;\n        }\n        else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" (if "if") (parenthesized_expression "(param_2 == (long *)0x0)" (( "(") (binary_expression "param_2 == (long *)0x0" (identifier "param_2") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          uVar14 = 0xffffffff;\n        }" ({ "{") (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" (identifier "uVar14") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (else_clause "else if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" (else "else") (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n          uVar14 = (uint)*(byte *)param_2[2];\n        }\n        else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" (if "if") (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" (( "(") (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(byte *)param_2[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n          uVar14 = (uint)*(byte *)param_2[2];\n        }" ({ "{") (expression_statement "uVar14 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar14 = (uint)*(byte *)param_2[2]" (identifier "uVar14") (= "=") (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" (else "else") (compound_statement "{\n                    \n          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);\n          if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }\n        }" ({ "{") (expression_statement "uVar14 = (**(code **)(*param_2 + 0x48))(param_2);" (assignment_expression "uVar14 = (**(code **)(*param_2 + 0x48))(param_2)" (identifier "uVar14") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (uVar14 == 0xffffffff) {\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" (if "if") (parenthesized_expression "(uVar14 == 0xffffffff)" (( "(") (binary_expression "uVar14 == 0xffffffff" (identifier "uVar14") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n            param_2 = (long *)0x0;\n            uVar14 = 0xffffffff;\n          }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" (identifier "uVar14") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (} "}")))))) (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" (identifier "local_b8") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_6a = 0;" (assignment_expression "local_6a = 0" (identifier "local_6a") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_6b = false;" (assignment_expression "local_6b = false" (identifier "local_6b") (= "=") (false "false")) (; ";")) (} "}")))) (labeled_statement "joined_r0x003487e4:\n  if (uVar17 == 0) {\n    local_50 = 0;\n    if ((bVar19) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }\n  else {\n    local_b0 = (undefined1)iVar8;\n    uVar10 = uVar17 + 1;\n    if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }\n    local_58[uVar17] = local_b0;\n    local_58[uVar10] = 0;\n    local_50 = uVar10;\n    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" (statement_identifier "joined_r0x003487e4") (: ":") (if_statement "if (uVar17 == 0) {\n    local_50 = 0;\n    if ((bVar19) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }\n  else {\n    local_b0 = (undefined1)iVar8;\n    uVar10 = uVar17 + 1;\n    if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }\n    local_58[uVar17] = local_b0;\n    local_58[uVar10] = 0;\n    local_50 = uVar10;\n    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" (if "if") (parenthesized_expression "(uVar17 == 0)" (( "(") (binary_expression "uVar17 == 0" (identifier "uVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_50 = 0;\n    if ((bVar19) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }\n  }" ({ "{") (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((bVar19) || (iVar8 != 0)) {\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }" (if "if") (parenthesized_expression "((bVar19) || (iVar8 != 0))" (( "(") (binary_expression "(bVar19) || (iVar8 != 0)" (parenthesized_expression "(bVar19)" (( "(") (identifier "bVar19") () ")")) (|| "||") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\nLAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }\n    }" ({ "{") (labeled_statement "LAB_00348a5d:\n      if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }" (statement_identifier "LAB_00348a5d") (: ":") (if_statement "if (local_6b == false) {\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }" (if "if") (parenthesized_expression "(local_6b == false)" (( "(") (binary_expression "local_6b == false" (identifier "local_6b") (== "==") (false "false")) () ")")) (compound_statement "{\n        if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }\n        goto LAB_0034881d;\n      }" ({ "{") (if_statement "if (local_6a == 0) {\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }\n        else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }" (if "if") (parenthesized_expression "(local_6a == 0)" (( "(") (binary_expression "local_6a == 0" (identifier "local_6a") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar10 = -local_a8;\n          if (!bVar23) {\n            uVar10 = local_a8;\n          }\n          *param_8 = uVar10;\n        }" ({ "{") (expression_statement "uVar10 = -local_a8;" (assignment_expression "uVar10 = -local_a8" (identifier "uVar10") (= "=") (unary_expression "-local_a8" (- "-") (identifier "local_a8"))) (; ";")) (if_statement "if (!bVar23) {\n            uVar10 = local_a8;\n          }" (if "if") (parenthesized_expression "(!bVar23)" (( "(") (unary_expression "!bVar23" (! "!") (identifier "bVar23")) () ")")) (compound_statement "{\n            uVar10 = local_a8;\n          }" ({ "{") (expression_statement "uVar10 = local_a8;" (assignment_expression "uVar10 = local_a8" (identifier "uVar10") (= "=") (identifier "local_a8")) (; ";")) (} "}"))) (expression_statement "*param_8 = uVar10;" (assignment_expression "*param_8 = uVar10" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (identifier "uVar10")) (; ";")) (} "}")) (else_clause "else {\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }" (else "else") (compound_statement "{\n          uVar10 = 0x8000000000000000;\n          if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }\n          *param_8 = uVar10;\n          *param_7 = 4;\n        }" ({ "{") (expression_statement "uVar10 = 0x8000000000000000;" (assignment_expression "uVar10 = 0x8000000000000000" (identifier "uVar10") (= "=") (number_literal "0x8000000000000000")) (; ";")) (if_statement "if (!bVar23) {\n            uVar10 = 0x7fffffffffffffff;\n          }" (if "if") (parenthesized_expression "(!bVar23)" (( "(") (unary_expression "!bVar23" (! "!") (identifier "bVar23")) () ")")) (compound_statement "{\n            uVar10 = 0x7fffffffffffffff;\n          }" ({ "{") (expression_statement "uVar10 = 0x7fffffffffffffff;" (assignment_expression "uVar10 = 0x7fffffffffffffff" (identifier "uVar10") (= "=") (number_literal "0x7fffffffffffffff")) (; ";")) (} "}"))) (expression_statement "*param_8 = uVar10;" (assignment_expression "*param_8 = uVar10" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (number_literal "4")) (; ";")) (} "}")))) (goto_statement "goto LAB_0034881d;" (goto "goto") (statement_identifier "LAB_0034881d") (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n    local_b0 = (undefined1)iVar8;\n    uVar10 = uVar17 + 1;\n    if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }\n    local_58[uVar17] = local_b0;\n    local_58[uVar10] = 0;\n    local_50 = uVar10;\n    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" (else "else") (compound_statement "{\n    local_b0 = (undefined1)iVar8;\n    uVar10 = uVar17 + 1;\n    if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }\n    if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }\n    local_58[uVar17] = local_b0;\n    local_58[uVar10] = 0;\n    local_50 = uVar10;\n    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);\n    if (cVar5 == '\0') {\n      *param_7 = 4;\n    }\n    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;\n  }" ({ "{") (expression_statement "local_b0 = (undefined1)iVar8;" (assignment_expression "local_b0 = (undefined1)iVar8" (identifier "local_b0") (= "=") (cast_expression "(undefined1)iVar8" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (identifier "iVar8"))) (; ";")) (expression_statement "uVar10 = uVar17 + 1;" (assignment_expression "uVar10 = uVar17 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_58 == &local_48) {\n      uVar18 = 0xf;\n    }\n    else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }" (if "if") (parenthesized_expression "(local_58 == &local_48)" (( "(") (binary_expression "local_58 == &local_48" (identifier "local_58") (== "==") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) () ")")) (compound_statement "{\n      uVar18 = 0xf;\n    }" ({ "{") (expression_statement "uVar18 = 0xf;" (assignment_expression "uVar18 = 0xf" (identifier "uVar18") (= "=") (number_literal "0xf")) (; ";")) (} "}")) (else_clause "else {\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }" (else "else") (compound_statement "{\n      uVar18 = CONCAT71(uStack_47,local_48);\n    }" ({ "{") (expression_statement "uVar18 = CONCAT71(uStack_47,local_48);" (assignment_expression "uVar18 = CONCAT71(uStack_47,local_48)" (identifier "uVar18") (= "=") (call_expression "CONCAT71(uStack_47,local_48)" (identifier "CONCAT71") (argument_list "(uStack_47,local_48)" (( "(") (identifier "uStack_47") (, ",") (identifier "local_48") () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar18 < uVar10) {\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }" (if "if") (parenthesized_expression "(uVar18 < uVar10)" (( "(") (binary_expression "uVar18 < uVar10" (identifier "uVar18") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\n      local_50 = uVar17;\n      FUN_002e1960(&local_58,uVar17,0,0,1);\n    }" ({ "{") (expression_statement "local_50 = uVar17;" (assignment_expression "local_50 = uVar17" (identifier "local_50") (= "=") (identifier "uVar17")) (; ";")) (expression_statement "FUN_002e1960(&local_58,uVar17,0,0,1);" (call_expression "FUN_002e1960(&local_58,uVar17,0,0,1)" (identifier "FUN_002e1960") (argument_list "(&local_58,uVar17,0,0,1)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "uVar17") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (expression_statement "local_58[uVar17] = local_b0;" (assignment_expression "local_58[uVar17] = local_b0" (subscript_expression "local_58[uVar17]" (identifier "local_58") ([ "[") (identifier "uVar17") (] "]")) (= "=") (identifier "local_b0")) (; ";")) (expression_statement "local_58[uVar10] = 0;" (assignment_expression "local_58[uVar10] = 0" (subscript_expression "local_58[uVar10]" (identifier "local_58") ([ "[") (identifier "uVar10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_50 = uVar10;" (assignment_expression "local_50 = uVar10" (identifier "local_50") (= "=") (identifier "uVar10")) (; ";")) (expression_statement "cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);" (assignment_expression "cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58)" (identifier "cVar5") (= "=") (call_expression "FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58)" (identifier "FUN_003653d0") (argument_list "(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58)" (( "(") (pointer_expression "*(undefined8 *)(lVar22 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar22 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x10)" (( "(") (binary_expression "lVar22 + 0x10" (identifier "lVar22") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(lVar22 + 0x18)" (* "*") (cast_expression "(undefined8 *)(lVar22 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar22 + 0x18)" (( "(") (binary_expression "lVar22 + 0x18" (identifier "lVar22") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")")))) (; ";")) (if_statement "if (cVar5 == '\0') {\n      *param_7 = 4;\n    }" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      *param_7 = 4;\n    }" ({ "{") (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (number_literal "4")) (; ";")) (} "}"))) (if_statement "if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;" (if "if") (parenthesized_expression "(((iVar8 != 0) || (bVar19)) || (local_50 != 0))" (( "(") (binary_expression "((iVar8 != 0) || (bVar19)) || (local_50 != 0)" (parenthesized_expression "((iVar8 != 0) || (bVar19))" (( "(") (binary_expression "(iVar8 != 0) || (bVar19)" (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(bVar19)" (( "(") (identifier "bVar19") () ")"))) () ")")) (|| "||") (parenthesized_expression "(local_50 != 0)" (( "(") (binary_expression "local_50 != 0" (identifier "local_50") (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00348a5d;" (goto "goto") (statement_identifier "LAB_00348a5d") (; ";"))) (} "}"))))) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_7 = 4;" (assignment_expression "*param_7 = 4" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (number_literal "4")) (; ";")) (labeled_statement "LAB_0034881d:\n  if (bVar21 != 0) {\n    *param_7 = *param_7 | 2;\n  }" (statement_identifier "LAB_0034881d") (: ":") (if_statement "if (bVar21 != 0) {\n    *param_7 = *param_7 | 2;\n  }" (if "if") (parenthesized_expression "(bVar21 != 0)" (( "(") (binary_expression "bVar21 != 0" (identifier "bVar21") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *param_7 = *param_7 | 2;\n  }" ({ "{") (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (binary_expression "*param_7 | 2" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (| "|") (number_literal "2"))) (; ";")) (} "}")))) (if_statement "if (local_58 != &local_48) {\n    FUN_002dac70();\n  }" (if "if") (parenthesized_expression "(local_58 != &local_48)" (( "(") (binary_expression "local_58 != &local_48" (identifier "local_58") (!= "!=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) () ")")) (compound_statement "{\n    FUN_002dac70();\n  }" ({ "{") (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" (identifier "FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "auVar26._8_8_ = param_3 & 0xffffffff00000000 | local_b8;" (assignment_expression "auVar26._8_8_ = param_3 & 0xffffffff00000000 | local_b8" (field_expression "auVar26._8_8_" (identifier "auVar26") (. ".") (field_identifier "_8_8_")) (= "=") (binary_expression "param_3 & 0xffffffff00000000 | local_b8" (binary_expression "param_3 & 0xffffffff00000000" (identifier "param_3") (& "&") (number_literal "0xffffffff00000000")) (| "|") (identifier "local_b8"))) (; ";")) (expression_statement "auVar26._0_8_ = param_2;" (assignment_expression "auVar26._0_8_ = param_2" (field_expression "auVar26._0_8_" (identifier "auVar26") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "param_2")) (; ";")) (return_statement "return auVar26;" (return "return") (identifier "auVar26") (; ";")) (labeled_statement "code_r0x00348c77:\n  local_b8 = 0xffffffff;" (statement_identifier "code_r0x00348c77") (: ":") (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" (identifier "local_b8") (= "=") (number_literal "0xffffffff")) (; ";"))) (expression_statement "bVar21 = bVar3;" (assignment_expression "bVar21 = bVar3" (identifier "bVar21") (= "=") (identifier "bVar3")) (; ";")) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" (identifier "uVar17") (= "=") (identifier "local_50")) (; ";")) (goto_statement "goto joined_r0x003487e4;" (goto "goto") (statement_identifier "joined_r0x003487e4") (; ";")) (labeled_statement "LAB_003487c9:\n  local_b8 = 0xffffffff;" (statement_identifier "LAB_003487c9") (: ":") (expression_statement "local_b8 = 0xffffffff;" (assignment_expression "local_b8 = 0xffffffff" (identifier "local_b8") (= "=") (number_literal "0xffffffff")) (; ";"))) (expression_statement "bVar21 = 1;" (assignment_expression "bVar21 = 1" (identifier "bVar21") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" (identifier "uVar17") (= "=") (identifier "local_50")) (; ";")) (goto_statement "goto joined_r0x003487e4;" (goto "goto") (statement_identifier "joined_r0x003487e4") (; ";")) (labeled_statement "LAB_003489c8:\n  bVar21 = 0;" (statement_identifier "LAB_003489c8") (: ":") (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" (identifier "bVar21") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar17 = local_50;" (assignment_expression "uVar17 = local_50" (identifier "uVar17") (= "=") (identifier "local_50")) (; ";")) (goto_statement "goto joined_r0x003487e4;" (goto "goto") (statement_identifier "joined_r0x003487e4") (; ";")) (ERROR "}" (} "}"))

/* std::istreambuf_iterator<char, std::char_traits<char> > std::num_get<char,
   std::istreambuf_iterator<char, std::char_traits<char> >
   >::_M_extract_int[abi:cxx11]<long>(std::istreambuf_iterator<char, std::char_traits<char> >,
   std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&,
   long&) const */

type_2  [16]
std::num_get<var_2,std::istreambuf_iterator<var_2,std::var_1<var_2>>>::
var_3<var_4>
          (type_5 param_1,var_4 *var_5,var_9 var_12,var_4 *var_6,int var_25,var_4 var_13,
          var_7 *var_8,var_9 *var_10)

{
  var_9 var_48;
  long *plVar2;
  type_1 var_35;
  bool var_27;
  char var_30;
  int var_32;
  int var_33;
  int var_23;
  var_9 var_14;
  void *var_43;
  var_11<var_2> *var_17;
  var_9 var_47;
  var_7 var_21;
  var_7 var_20;
  char var_29;
  var_9 var_40;
  var_9 var_38;
  bool var_28;
  var_7 uVar18;
  type_1 var_51;
  long var_15;
  bool var_24;
  bool var_22;
  bool var_26;
  type_2 auVar24 [16];
  long *var_31;
  var_9 var_53;
  type_2 local_b0;
  var_9 var_39;
  var_9 var_37;
  bool var_36;
  type_1 var_41;
  type_2 *var_45;
  var_9 var_44;
  type_2 local_48;
  type_3 uStack_47;
  
  var_53 = var_12 & 0xffffffff;
  var_14 = type_8::id::_M_id((id *)&numpunct<var_2>::id);
  plVar2 = (long *)(*(long *)(*(long *)(var_13 + 0xd0) + 0x18) + var_14 * 8);
  var_15 = *plVar2;
  if (var_15 == 0) {
                    /* try { // try from 00348f25 to 00348f29 has its CatchHandler @ 003492e7 */
    var_17 = (var_11<var_2> *)var_16(0x90);
    *(type_4 *)(var_17 + 8) = 0;
    var_17[0x20] = (var_11<var_2>)0x0;
    *(type_5 *)(var_17 + 0x10) = 0;
    *(type_6 ***)var_17 = &PTR____numpunct_cache_00439298;
    *(type_5 *)(var_17 + 0x18) = 0;
    *(type_5 *)(var_17 + 0x28) = 0;
    *(type_5 *)(var_17 + 0x30) = 0;
    *(type_5 *)(var_17 + 0x38) = 0;
    *(type_5 *)(var_17 + 0x40) = 0;
    *(type_7 *)(var_17 + 0x48) = 0;
    var_17[0x88] = (var_11<var_2>)0x0;
                    /* try { // try from 00348f92 to 00348f96 has its CatchHandler @ 003492e5 */
    var_11<var_2>::var_18(var_17,(type_8 *)(var_13 + 0xd0));
    locale::_Impl::var_19(*(type_9 **)(var_13 + 0xd0),(type_10 *)var_17,var_14);
    var_15 = *plVar2;
  }
  var_20 = *(var_7 *)(var_13 + 0x18);
  var_21 = var_20 & 0x4a;
  var_32 = 8;
  if (var_21 != 0x40) {
    var_32 = 0x10;
    if (var_21 != 8) {
      var_32 = 10;
    }
  }
  var_22 = (var_7)var_12 == 0xffffffff;
  var_24 = var_5 != (long *)0x0 && var_22;
  var_28 = var_22;
  if (var_24) {
    if ((var_9)var_5[2] < (var_9)var_5[3]) {
      var_28 = false;
    }
    else {
      var_23 = (**(type_11 **)(*var_5 + 0x48))(var_5);
      plVar2 = (long *)0x0;
      if (var_23 != -1) {
        plVar2 = var_5;
      }
      var_5 = plVar2;
      var_28 = var_23 == -1 && var_24;
    }
  }
  var_20 = var_20 & 0x4a;
  var_26 = var_25 == -1;
  var_27 = var_6 != (long *)0x0 && var_26;
  var_31 = var_6;
  var_24 = var_26;
  if (var_27) {
    if ((var_9)var_6[2] < (var_9)var_6[3]) {
      var_24 = false;
    }
    else {
      var_23 = (**(type_11 **)(*var_6 + 0x48))(var_6);
      var_31 = (long *)0x0;
      if (var_23 != -1) {
        var_31 = var_6;
      }
      var_24 = var_23 == -1 && var_27;
    }
  }
  if (var_24 == var_28) {
    var_30 = *(char *)(var_15 + 0x20);
    var_24 = false;
    var_21 = 0;
    var_28 = false;
    var_36 = true;
    var_23 = 0;
  }
  else {
    if ((var_5 == (long *)0x0) || (!var_22)) {
      var_21 = (var_7)var_12 & 0xff;
    }
    else if ((type_1 *)var_5[2] < (type_1 *)var_5[3]) {
      var_21 = (var_7)*(type_1 *)var_5[2];
    }
    else {
      var_21 = (**(type_11 **)(*var_5 + 0x48))(var_5);
      if (var_21 == 0xffffffff) {
        var_5 = (long *)0x0;
        var_21 = 0xffffffff;
      }
    }
    var_30 = *(char *)(var_15 + 0x20);
    var_29 = (char)var_21;
    var_24 = *(char *)(var_15 + 0x6e) == var_29;
    if ((var_24) || (*(char *)(var_15 + 0x6f) == var_29)) {
      if (((var_30 == '\0') || (*(char *)(var_15 + 0x49) != var_29)) &&
         (*(char *)(var_15 + 0x48) != var_29)) {
        if ((var_9)var_5[2] < (var_9)var_5[3]) {
          var_5[2] = var_5[2] + 1;
        }
        else {
          (**(type_11 **)(*var_5 + 0x50))(var_5);
        }
        var_28 = false;
        if ((var_9)var_5[3] <= (var_9)var_5[2]) {
          var_23 = (**(type_11 **)(*var_5 + 0x48))(var_5);
          var_28 = var_23 == -1;
          if (var_28) {
            var_5 = (long *)0x0;
          }
        }
        var_27 = var_31 != (long *)0x0 && var_26;
        var_22 = var_26;
        if (var_27) {
          if ((var_9)var_31[2] < (var_9)var_31[3]) {
            var_22 = false;
          }
          else {
            var_23 = (**(type_11 **)(*var_31 + 0x48))(var_31);
            plVar2 = (long *)0x0;
            if (var_23 != -1) {
              plVar2 = var_31;
            }
            var_31 = plVar2;
            var_22 = var_23 == -1 && var_27;
          }
        }
        if (var_22 == var_28) {
          var_30 = *(char *)(var_15 + 0x20);
          var_36 = true;
          var_28 = false;
          var_53 = 0xffffffff;
          var_23 = 0;
          goto LAB_00348669;
        }
        var_21 = 0xffffffff;
        if (var_5 != (long *)0x0) {
          if ((type_1 *)var_5[2] < (type_1 *)var_5[3]) {
            var_21 = (var_7)*(type_1 *)var_5[2];
          }
          else {
            var_21 = (**(type_11 **)(*var_5 + 0x48))(var_5);
            if (var_21 == 0xffffffff) {
              var_5 = (long *)0x0;
              var_21 = 0xffffffff;
            }
          }
        }
        var_30 = *(char *)(var_15 + 0x20);
        var_53 = 0xffffffff;
      }
    }
    else {
      var_24 = false;
    }
    var_28 = false;
    var_23 = 0;
    do {
      uVar18 = (var_7)var_53;
      var_29 = (char)var_21;
      if (((var_30 != '\0') && (*(char *)(var_15 + 0x49) == var_29)) ||
         (*(char *)(var_15 + 0x48) == var_29)) break;
      var_22 = var_26;
      if (*(char *)(var_15 + 0x72) == var_29) {
        var_27 = (bool)(var_32 == 10 | var_28 ^ 1U);
        if (!var_27) goto LAB_003485d9;
        var_28 = var_32 == 8 || var_20 == 0;
        if (var_32 != 8 && var_20 != 0) {
          var_23 = var_23 + 1;
          var_28 = var_27;
          goto LAB_0034860e;
        }
        var_23 = 0;
        var_32 = 8;
        var_14 = var_5[2];
        if ((var_9)var_5[3] <= var_14) goto LAB_003488c0;
LAB_0034861c:
        var_5[2] = var_14 + 1;
        if ((var_9)var_5[3] <= (var_9)var_5[2]) goto LAB_003488f8;
LAB_00348635:
        var_27 = false;
        if (var_31 != (long *)0x0 && var_26) goto LAB_00348940;
LAB_00348646:
        if (var_22 == var_27) {
LAB_0034864f:
          var_53 = 0xffffffff;
          var_30 = *(char *)(var_15 + 0x20);
          var_36 = true;
          goto LAB_00348669;
        }
      }
      else {
        if (!var_28) break;
LAB_003485d9:
        if ((*(char *)(var_15 + 0x70) != var_29) && (*(char *)(var_15 + 0x71) != var_29)) {
          var_28 = true;
          var_36 = false;
          goto LAB_00348669;
        }
        var_36 = var_32 == 0x10 || var_20 == 0;
        if (var_32 != 0x10 && var_20 != 0) {
          var_28 = true;
          goto LAB_00348678;
        }
        var_23 = 0;
        var_32 = 0x10;
        var_28 = false;
LAB_0034860e:
        var_14 = var_5[2];
        if (var_14 < (var_9)var_5[3]) goto LAB_0034861c;
LAB_003488c0:
        (**(type_11 **)(*var_5 + 0x50))(var_5);
        if ((var_9)var_5[2] < (var_9)var_5[3]) goto LAB_00348635;
LAB_003488f8:
        var_33 = (**(type_11 **)(*var_5 + 0x48))(var_5);
        var_27 = var_33 == -1;
        if (var_27) {
          var_5 = (long *)0x0;
        }
        if (var_31 == (long *)0x0 || !var_26) goto LAB_00348646;
LAB_00348940:
        var_22 = var_31 != (long *)0x0;
        if ((var_9)var_31[3] <= (var_9)var_31[2]) {
          var_33 = (**(type_11 **)(*var_31 + 0x48))(var_31);
          if (var_33 == -1) {
            var_31 = (long *)0x0;
          }
          var_22 = var_33 == -1 && (var_22 && var_26);
          goto LAB_00348646;
        }
        if (var_27 == false) goto LAB_0034864f;
      }
      var_21 = 0xffffffff;
      if (var_5 != (long *)0x0) {
        if ((type_1 *)var_5[2] < (type_1 *)var_5[3]) {
          var_21 = (var_7)*(type_1 *)var_5[2];
        }
        else {
          var_21 = (**(type_11 **)(*var_5 + 0x48))(var_5);
          if (var_21 == 0xffffffff) {
            var_5 = (long *)0x0;
            var_21 = 0xffffffff;
          }
        }
      }
      var_30 = *(char *)(var_15 + 0x20);
      var_53 = 0xffffffff;
      uVar18 = 0xffffffff;
    } while (var_28);
    var_53 = (var_9)uVar18;
    var_36 = false;
  }
LAB_00348669:
  var_37 = 0x16;
  if (var_32 != 0x10) {
LAB_00348678:
    var_37 = (var_9)var_32;
  }
  var_51 = var_36;
  local_48 = 0;
  var_45 = &local_48;
  var_44 = 0;
  if (var_30 != '\0') {
    std::string::var_34((type_12 *)&var_45,0x20);
  }
  var_38 = (var_9)var_32;
  var_35 = *(type_1 *)(var_15 + 0x88);
  var_14 = 0x7fffffffffffffff;
  if (var_24) {
    var_14 = 0x8000000000000000;
  }
  var_40 = var_44;
  if (var_35 == 0) {
    if (var_36 == false) {
      var_41 = 0;
      var_39 = 0;
      do {
        var_30 = (char)var_21;
        var_32 = (int)var_30;
        if (var_37 < 0xb) {
          if ((var_30 < '0') || ((char)((char)var_37 + '0') <= var_30)) goto LAB_003489c8;
LAB_00348742:
          var_32 = var_32 + -0x30;
        }
        else {
          if ((type_1)(var_30 - 0x30U) < 10) goto LAB_00348742;
          if ((type_1)(var_30 + 0x9fU) < 6) {
            var_32 = var_32 + -0x57;
          }
          else {
            if (5 < (type_1)(var_30 + 0xbfU)) goto LAB_003489c8;
            var_32 = var_32 + -0x37;
          }
        }
        if (var_32 == -1) goto LAB_003489c8;
        var_22 = var_26;
        if (var_14 / var_38 < var_39) {
          var_41 = 1;
          var_40 = var_5[2];
          if (var_40 < (var_9)var_5[3]) goto LAB_00348793;
LAB_00348ac3:
                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */
          (**(type_11 **)(*var_5 + 0x50))(var_5);
          if ((var_9)var_5[2] < (var_9)var_5[3]) goto LAB_003487ac;
LAB_00348ae0:
          var_32 = (**(type_11 **)(*var_5 + 0x48))(var_5);
          var_27 = var_32 == -1;
          if (var_27) {
            var_5 = (long *)0x0;
          }
          if (var_31 != (long *)0x0 && var_26) goto LAB_00348b10;
LAB_003487c0:
          if (var_22 == var_27) goto LAB_003487c9;
        }
        else {
          var_40 = var_39 * var_38;
          var_39 = (long)var_32 + var_40;
          var_41 = var_41 | var_14 - (long)var_32 < var_40;
          var_40 = var_5[2];
          var_23 = var_23 + 1;
          if ((var_9)var_5[3] <= var_40) goto LAB_00348ac3;
LAB_00348793:
          var_5[2] = var_40 + 1;
          if ((var_9)var_5[3] <= (var_9)var_5[2]) goto LAB_00348ae0;
LAB_003487ac:
          var_27 = false;
          if (var_31 == (long *)0x0 || !var_26) goto LAB_003487c0;
LAB_00348b10:
          var_22 = var_31 != (long *)0x0;
          if ((var_9)var_31[3] <= (var_9)var_31[2]) {
                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */
            var_32 = (**(type_11 **)(*var_31 + 0x48))(var_31);
            plVar2 = (long *)0x0;
            if (var_32 != -1) {
              plVar2 = var_31;
            }
            var_31 = plVar2;
            var_22 = var_32 == -1 && (var_22 && var_26);
            goto LAB_003487c0;
          }
          if (var_27 == false) goto LAB_003487c9;
        }
        if (var_5 == (long *)0x0) {
          var_21 = 0xffffffff;
        }
        else if ((type_1 *)var_5[2] < (type_1 *)var_5[3]) {
          var_21 = (var_7)*(type_1 *)var_5[2];
        }
        else {
                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */
          var_21 = (**(type_11 **)(*var_5 + 0x48))(var_5);
          if (var_21 == 0xffffffff) {
            var_5 = (long *)0x0;
            var_21 = 0xffffffff;
          }
        }
        var_53 = 0xffffffff;
      } while( true );
    }
    var_41 = 0;
    var_36 = false;
    var_39 = 0;
  }
  else {
    if (var_36 == false) {
      var_41 = 0;
      var_39 = 0;
      do {
        var_40 = var_44;
        var_30 = (char)var_21;
        if ((*(type_1 *)(var_15 + 0x20) == 0) || (*(char *)(var_15 + 0x49) != var_30)) {
          if ((var_30 == *(char *)(var_15 + 0x48)) ||
             (var_43 = var_42((void *)(var_15 + 0x72),(int)var_30,var_37), var_43 == (void *)0x0)
             ) goto LAB_003489c8;
          var_32 = (int)var_43 - (int)(void *)(var_15 + 0x72);
          if (0xf < var_32) {
            var_32 = var_32 + -6;
          }
          if (var_39 <= var_14 / var_38) {
            var_40 = var_39 * var_38;
            var_39 = (long)var_32 + var_40;
            var_41 = var_41 | var_14 - (long)var_32 < var_40;
            var_23 = var_23 + 1;
            goto LAB_00348c3c;
          }
          var_40 = var_5[2];
          var_41 = var_35;
          if (var_40 < (var_9)var_5[3]) goto LAB_00348c46;
LAB_00348c9f:
          (**(type_11 **)(*var_5 + 0x50))(var_5);
          var_53._0_1_ = 0;
          if ((var_9)var_5[3] <= (var_9)var_5[2]) {
LAB_00348cc0:
            var_32 = (**(type_11 **)(*var_5 + 0x48))(var_5);
            var_53._0_1_ = 0;
            if (var_32 == -1) {
              var_5 = (long *)0x0;
              var_53._0_1_ = var_35;
            }
          }
        }
        else {
          if (var_23 == 0) {
            var_51 = 0;
            var_36 = (bool)*(type_1 *)(var_15 + 0x20);
            goto joined_r0x003487e4;
          }
          var_48 = var_44 + 1;
          if (var_45 == &local_48) {
            var_47 = 0xf;
          }
          else {
            var_47 = var_46(uStack_47,local_48);
          }
          if (var_47 < var_48) {
            std::string::var_49((type_12 *)&var_45,var_44,0,(char *)0x0,1);
          }
          local_b0 = (type_2)var_23;
          var_23 = 0;
          var_45[var_40] = local_b0;
          var_45[var_48] = 0;
          var_44 = var_48;
LAB_00348c3c:
          var_40 = var_5[2];
          if ((var_9)var_5[3] <= var_40) goto LAB_00348c9f;
LAB_00348c46:
          var_53._0_1_ = 0;
          var_5[2] = var_40 + 1;
          if ((var_9)var_5[3] <= (var_9)var_5[2]) goto LAB_00348cc0;
        }
        var_27 = var_31 != (long *)0x0 && var_26;
        var_22 = var_26;
        if (var_27) {
          if ((var_9)var_31[2] < (var_9)var_31[3]) {
            var_22 = false;
          }
          else {
            var_32 = (**(type_11 **)(*var_31 + 0x48))(var_31);
            plVar2 = (long *)0x0;
            if (var_32 != -1) {
              plVar2 = var_31;
            }
            var_22 = var_32 == -1 && var_27;
            var_31 = plVar2;
          }
        }
        if ((bool)(type_1)var_53 == var_22) goto code_r0x00348c77;
        if (var_5 == (long *)0x0) {
          var_21 = 0xffffffff;
        }
        else if ((type_1 *)var_5[2] < (type_1 *)var_5[3]) {
          var_21 = (var_7)*(type_1 *)var_5[2];
        }
        else {
                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */
          var_21 = (**(type_11 **)(*var_5 + 0x48))(var_5);
          if (var_21 == 0xffffffff) {
            var_5 = (long *)0x0;
            var_21 = 0xffffffff;
          }
        }
        var_53 = 0xffffffff;
      } while( true );
    }
    var_39 = 0;
    var_41 = 0;
    var_36 = false;
  }
joined_r0x003487e4:
  if (var_40 == 0) {
    var_44 = 0;
    if ((var_28) || (var_23 != 0)) {
LAB_00348a5d:
      if (var_36 == false) {
        if (var_41 == 0) {
          var_14 = -var_39;
          if (!var_24) {
            var_14 = var_39;
          }
          *var_10 = var_14;
        }
        else {
          var_14 = 0x8000000000000000;
          if (!var_24) {
            var_14 = 0x7fffffffffffffff;
          }
          *var_10 = var_14;
          *var_8 = 4;
        }
        goto LAB_0034881d;
      }
    }
  }
  else {
    local_b0 = (type_2)var_23;
    var_14 = var_40 + 1;
    if (var_45 == &local_48) {
      var_38 = 0xf;
    }
    else {
      var_38 = var_46(uStack_47,local_48);
    }
    if (var_38 < var_14) {
      var_44 = var_40;
      std::string::var_49((type_12 *)&var_45,var_40,0,(char *)0x0,1);
    }
    var_45[var_40] = local_b0;
    var_45[var_14] = 0;
    var_44 = var_14;
    var_30 = var_50(*(char **)(var_15 + 0x10),*(var_9 *)(var_15 + 0x18),
                              (type_12 *)&var_45);
    if (var_30 == '\0') {
      *var_8 = 4;
    }
    if (((var_23 != 0) || (var_28)) || (var_44 != 0)) goto LAB_00348a5d;
  }
  *var_10 = 0;
  *var_8 = 4;
LAB_0034881d:
  if (var_51 != 0) {
    *var_8 = *var_8 | 2;
  }
  if (var_45 != &local_48) {
    var_52(var_45);
  }
  auVar24._8_8_ = var_12 & 0xffffffff00000000 | var_53;
  auVar24._0_8_ = var_5;
  return auVar24;
code_r0x00348c77:
  var_53 = 0xffffffff;
  var_51 = var_35;
  var_40 = var_44;
  goto joined_r0x003487e4;
LAB_003487c9:
  var_53 = 0xffffffff;
  var_51 = 1;
  var_40 = var_44;
  goto joined_r0x003487e4;
LAB_003489c8:
  var_51 = 0;
  var_40 = var_44;
  goto joined_r0x003487e4;
}


(translation_unit (expression_statement (subscript_expression argument: (identifier) index: (number_literal)) (MISSING ";")) (declaration type: (macro_type_specifier name: (identifier) type: (type_descriptor type: (type_identifier)) (MISSING ")")) declarator: (identifier) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier) (pointer_declarator declarator: (identifier)) (identifier)) declarator: (identifier)) (declaration type: (sized_type_specifier) 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: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (sized_type_specifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (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: (number_literal))) (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: (number_literal))) (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: (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 (identifier) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (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))))) (identifier) (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: (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: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) 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: (identifier) right: (false)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) 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: (identifier) right: (false)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (true))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (unary_expression argument: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))) alternative: (else_clause (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (identifier)) right: (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: (identifier))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (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: (identifier))))) right: (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: (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: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (false))) (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: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) 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: (identifier) right: (false)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (true))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_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: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false)))))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (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: (identifier))))) right: (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: (identifier))))) consequence: (break_statement)) (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: (primitive_type) 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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (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: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (false)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_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: (identifier) right: (true))) (goto_statement label: (statement_identifier)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (break_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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) right: (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: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (true))) (expression_statement (assignment_expression left: (identifier) right: (false))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (true))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (false))) (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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (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: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (unary_expression argument: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (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: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (false))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_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: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) condition: (parenthesized_expression (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (false)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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 (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) 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: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (false))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) 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 (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (character))))) right: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (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: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (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: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (false)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (unary_expression argument: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (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: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (false))) consequence: (goto_statement label: (statement_identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) condition: (parenthesized_expression (true))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (false))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (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: (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: (identifier) right: (number_literal))))) right: (number_literal))) right: (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: (identifier))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_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))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) (identifier)))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) 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: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (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 (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_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: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier)))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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)))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (number_literal) (number_literal) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) 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: (identifier) right: (false)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) condition: (parenthesized_expression (true))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (false)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (false))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (goto_statement label: (statement_identifier)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (number_literal) (number_literal) (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (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))))) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (identifier)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (return_statement (identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)) (ERROR))

undefined1  [16]
MASKED(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,long param_6,
            uint *param_7,ulong *param_8)

{
  ulong uVar1;
  long *plVar2;
  byte bVar3;
  bool bVar4;
  char cVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  long lVar9;
  ulong uVar10;
  void *pvVar11;
  undefined8 *puVar12;
  ulong uVar13;
  uint uVar14;
  uint uVar15;
  char cVar16;
  ulong uVar17;
  ulong uVar18;
  bool bVar19;
  uint uVar20;
  byte bVar21;
  long lVar22;
  bool bVar23;
  bool bVar24;
  bool bVar25;
  undefined1 auVar26 [16];
  long *local_c0;
  ulong local_b8;
  undefined1 local_b0;
  ulong local_a8;
  ulong local_a0;
  bool local_6b;
  byte local_6a;
  undefined1 *local_58;
  ulong local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  
  local_b8 = param_3 & 0xffffffff;
  lVar9 = FUN_002dd3b0(&DAT_0044bd90);
  plVar2 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar9 * 8);
  lVar22 = *plVar2;
  if (lVar22 == 0) {
                    /* try { // try from 00348f25 to 00348f29 has its CatchHandler @ 003492e7 */
    puVar12 = (undefined8 *)FUN_002d94a0(0x90);
    *(undefined4 *)(puVar12 + 1) = 0;
    *(undefined1 *)(puVar12 + 4) = 0;
    puVar12[2] = 0;
    *puVar12 = &PTR_FUN_00439298;
    puVar12[3] = 0;
    puVar12[5] = 0;
    puVar12[6] = 0;
    puVar12[7] = 0;
    puVar12[8] = 0;
    *(undefined2 *)(puVar12 + 9) = 0;
    *(undefined1 *)(puVar12 + 0x11) = 0;
                    /* try { // try from 00348f92 to 00348f96 has its CatchHandler @ 003492e5 */
    FUN_002ece10(puVar12,param_6 + 0xd0);
    FUN_002dd820(*(undefined8 *)(param_6 + 0xd0),puVar12,lVar9);
    lVar22 = *plVar2;
  }
  uVar15 = *(uint *)(param_6 + 0x18);
  uVar14 = uVar15 & 0x4a;
  iVar6 = 8;
  if (uVar14 != 0x40) {
    iVar6 = 0x10;
    if (uVar14 != 8) {
      iVar6 = 10;
    }
  }
  bVar24 = (uint)param_3 == 0xffffffff;
  bVar23 = param_2 != (long *)0x0 && bVar24;
  bVar19 = bVar24;
  if (bVar23) {
    if ((ulong)param_2[2] < (ulong)param_2[3]) {
      bVar19 = false;
    }
    else {
      iVar8 = (**(code **)(*param_2 + 0x48))(param_2);
      plVar2 = (long *)0x0;
      if (iVar8 != -1) {
        plVar2 = param_2;
      }
      param_2 = plVar2;
      bVar19 = iVar8 == -1 && bVar23;
    }
  }
  uVar15 = uVar15 & 0x4a;
  bVar25 = param_5 == -1;
  bVar4 = param_4 != (long *)0x0 && bVar25;
  local_c0 = param_4;
  bVar23 = bVar25;
  if (bVar4) {
    if ((ulong)param_4[2] < (ulong)param_4[3]) {
      bVar23 = false;
    }
    else {
      iVar8 = (**(code **)(*param_4 + 0x48))(param_4);
      local_c0 = (long *)0x0;
      if (iVar8 != -1) {
        local_c0 = param_4;
      }
      bVar23 = iVar8 == -1 && bVar4;
    }
  }
  if (bVar23 == bVar19) {
    cVar5 = *(char *)(lVar22 + 0x20);
    bVar23 = false;
    uVar14 = 0;
    bVar19 = false;
    local_6b = true;
    iVar8 = 0;
  }
  else {
    if ((param_2 == (long *)0x0) || (!bVar24)) {
      uVar14 = (uint)param_3 & 0xff;
    }
    else if ((byte *)param_2[2] < (byte *)param_2[3]) {
      uVar14 = (uint)*(byte *)param_2[2];
    }
    else {
      uVar14 = (**(code **)(*param_2 + 0x48))(param_2);
      if (uVar14 == 0xffffffff) {
        param_2 = (long *)0x0;
        uVar14 = 0xffffffff;
      }
    }
    cVar5 = *(char *)(lVar22 + 0x20);
    cVar16 = (char)uVar14;
    bVar23 = *(char *)(lVar22 + 0x6e) == cVar16;
    if ((bVar23) || (*(char *)(lVar22 + 0x6f) == cVar16)) {
      if (((cVar5 == '\0') || (*(char *)(lVar22 + 0x49) != cVar16)) &&
         (*(char *)(lVar22 + 0x48) != cVar16)) {
        if ((ulong)param_2[2] < (ulong)param_2[3]) {
          param_2[2] = param_2[2] + 1;
        }
        else {
          (**(code **)(*param_2 + 0x50))(param_2);
        }
        bVar19 = false;
        if ((ulong)param_2[3] <= (ulong)param_2[2]) {
          iVar8 = (**(code **)(*param_2 + 0x48))(param_2);
          bVar19 = iVar8 == -1;
          if (bVar19) {
            param_2 = (long *)0x0;
          }
        }
        bVar4 = local_c0 != (long *)0x0 && bVar25;
        bVar24 = bVar25;
        if (bVar4) {
          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {
            bVar24 = false;
          }
          else {
            iVar8 = (**(code **)(*local_c0 + 0x48))(local_c0);
            plVar2 = (long *)0x0;
            if (iVar8 != -1) {
              plVar2 = local_c0;
            }
            local_c0 = plVar2;
            bVar24 = iVar8 == -1 && bVar4;
          }
        }
        if (bVar24 == bVar19) {
          cVar5 = *(char *)(lVar22 + 0x20);
          local_6b = true;
          bVar19 = false;
          local_b8 = 0xffffffff;
          iVar8 = 0;
          goto LAB_00348669;
        }
        uVar14 = 0xffffffff;
        if (param_2 != (long *)0x0) {
          if ((byte *)param_2[2] < (byte *)param_2[3]) {
            uVar14 = (uint)*(byte *)param_2[2];
          }
          else {
            uVar14 = (**(code **)(*param_2 + 0x48))(param_2);
            if (uVar14 == 0xffffffff) {
              param_2 = (long *)0x0;
              uVar14 = 0xffffffff;
            }
          }
        }
        cVar5 = *(char *)(lVar22 + 0x20);
        local_b8 = 0xffffffff;
      }
    }
    else {
      bVar23 = false;
    }
    bVar19 = false;
    iVar8 = 0;
    do {
      uVar20 = (uint)local_b8;
      cVar16 = (char)uVar14;
      if (((cVar5 != '\0') && (*(char *)(lVar22 + 0x49) == cVar16)) ||
         (*(char *)(lVar22 + 0x48) == cVar16)) break;
      bVar24 = bVar25;
      if (*(char *)(lVar22 + 0x72) == cVar16) {
        bVar4 = (bool)(iVar6 == 10 | bVar19 ^ 1U);
        if (!bVar4) goto LAB_003485d9;
        bVar19 = iVar6 == 8 || uVar15 == 0;
        if (iVar6 != 8 && uVar15 != 0) {
          iVar8 = iVar8 + 1;
          bVar19 = bVar4;
          goto LAB_0034860e;
        }
        iVar8 = 0;
        iVar6 = 8;
        uVar10 = param_2[2];
        if ((ulong)param_2[3] <= uVar10) goto LAB_003488c0;
LAB_0034861c:
        param_2[2] = uVar10 + 1;
        if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_003488f8;
LAB_00348635:
        bVar4 = false;
        if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348940;
LAB_00348646:
        if (bVar24 == bVar4) {
LAB_0034864f:
          local_b8 = 0xffffffff;
          cVar5 = *(char *)(lVar22 + 0x20);
          local_6b = true;
          goto LAB_00348669;
        }
      }
      else {
        if (!bVar19) break;
LAB_003485d9:
        if ((*(char *)(lVar22 + 0x70) != cVar16) && (*(char *)(lVar22 + 0x71) != cVar16)) {
          bVar19 = true;
          local_6b = false;
          goto LAB_00348669;
        }
        local_6b = iVar6 == 0x10 || uVar15 == 0;
        if (iVar6 != 0x10 && uVar15 != 0) {
          bVar19 = true;
          goto LAB_00348678;
        }
        iVar8 = 0;
        iVar6 = 0x10;
        bVar19 = false;
LAB_0034860e:
        uVar10 = param_2[2];
        if (uVar10 < (ulong)param_2[3]) goto LAB_0034861c;
LAB_003488c0:
        (**(code **)(*param_2 + 0x50))(param_2);
        if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_00348635;
LAB_003488f8:
        iVar7 = (**(code **)(*param_2 + 0x48))(param_2);
        bVar4 = iVar7 == -1;
        if (bVar4) {
          param_2 = (long *)0x0;
        }
        if (local_c0 == (long *)0x0 || !bVar25) goto LAB_00348646;
LAB_00348940:
        bVar24 = local_c0 != (long *)0x0;
        if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {
          iVar7 = (**(code **)(*local_c0 + 0x48))(local_c0);
          if (iVar7 == -1) {
            local_c0 = (long *)0x0;
          }
          bVar24 = iVar7 == -1 && (bVar24 && bVar25);
          goto LAB_00348646;
        }
        if (bVar4 == false) goto LAB_0034864f;
      }
      uVar14 = 0xffffffff;
      if (param_2 != (long *)0x0) {
        if ((byte *)param_2[2] < (byte *)param_2[3]) {
          uVar14 = (uint)*(byte *)param_2[2];
        }
        else {
          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);
          if (uVar14 == 0xffffffff) {
            param_2 = (long *)0x0;
            uVar14 = 0xffffffff;
          }
        }
      }
      cVar5 = *(char *)(lVar22 + 0x20);
      local_b8 = 0xffffffff;
      uVar20 = 0xffffffff;
    } while (bVar19);
    local_b8 = (ulong)uVar20;
    local_6b = false;
  }
LAB_00348669:
  local_a0 = 0x16;
  if (iVar6 != 0x10) {
LAB_00348678:
    local_a0 = (ulong)iVar6;
  }
  bVar21 = local_6b;
  local_48 = 0;
  local_58 = &local_48;
  local_50 = 0;
  if (cVar5 != '\0') {
    FUN_002e1e10(&local_58,0x20);
  }
  uVar18 = (ulong)iVar6;
  bVar3 = *(byte *)(lVar22 + 0x88);
  uVar10 = 0x7fffffffffffffff;
  if (bVar23) {
    uVar10 = 0x8000000000000000;
  }
  uVar17 = local_50;
  if (bVar3 == 0) {
    if (local_6b == false) {
      local_6a = 0;
      local_a8 = 0;
      do {
        cVar5 = (char)uVar14;
        iVar6 = (int)cVar5;
        if (local_a0 < 0xb) {
          if ((cVar5 < '0') || ((char)((char)local_a0 + '0') <= cVar5)) goto LAB_003489c8;
LAB_00348742:
          iVar6 = iVar6 + -0x30;
        }
        else {
          if ((byte)(cVar5 - 0x30U) < 10) goto LAB_00348742;
          if ((byte)(cVar5 + 0x9fU) < 6) {
            iVar6 = iVar6 + -0x57;
          }
          else {
            if (5 < (byte)(cVar5 + 0xbfU)) goto LAB_003489c8;
            iVar6 = iVar6 + -0x37;
          }
        }
        if (iVar6 == -1) goto LAB_003489c8;
        bVar24 = bVar25;
        if (uVar10 / uVar18 < local_a8) {
          local_6a = 1;
          uVar17 = param_2[2];
          if (uVar17 < (ulong)param_2[3]) goto LAB_00348793;
LAB_00348ac3:
                    /* try { // try from 00348ac9 to 00348dae has its CatchHandler @ 003492e0 */
          (**(code **)(*param_2 + 0x50))(param_2);
          if ((ulong)param_2[2] < (ulong)param_2[3]) goto LAB_003487ac;
LAB_00348ae0:
          iVar6 = (**(code **)(*param_2 + 0x48))(param_2);
          bVar4 = iVar6 == -1;
          if (bVar4) {
            param_2 = (long *)0x0;
          }
          if (local_c0 != (long *)0x0 && bVar25) goto LAB_00348b10;
LAB_003487c0:
          if (bVar24 == bVar4) goto LAB_003487c9;
        }
        else {
          uVar17 = local_a8 * uVar18;
          local_a8 = (long)iVar6 + uVar17;
          local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;
          uVar17 = param_2[2];
          iVar8 = iVar8 + 1;
          if ((ulong)param_2[3] <= uVar17) goto LAB_00348ac3;
LAB_00348793:
          param_2[2] = uVar17 + 1;
          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348ae0;
LAB_003487ac:
          bVar4 = false;
          if (local_c0 == (long *)0x0 || !bVar25) goto LAB_003487c0;
LAB_00348b10:
          bVar24 = local_c0 != (long *)0x0;
          if ((ulong)local_c0[3] <= (ulong)local_c0[2]) {
                    /* try { // try from 00348fbe to 00349040 has its CatchHandler @ 003492e0 */
            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);
            plVar2 = (long *)0x0;
            if (iVar6 != -1) {
              plVar2 = local_c0;
            }
            local_c0 = plVar2;
            bVar24 = iVar6 == -1 && (bVar24 && bVar25);
            goto LAB_003487c0;
          }
          if (bVar4 == false) goto LAB_003487c9;
        }
        if (param_2 == (long *)0x0) {
          uVar14 = 0xffffffff;
        }
        else if ((byte *)param_2[2] < (byte *)param_2[3]) {
          uVar14 = (uint)*(byte *)param_2[2];
        }
        else {
                    /* try { // try from 0034911e to 00349142 has its CatchHandler @ 003492e0 */
          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);
          if (uVar14 == 0xffffffff) {
            param_2 = (long *)0x0;
            uVar14 = 0xffffffff;
          }
        }
        local_b8 = 0xffffffff;
      } while( true );
    }
    local_6a = 0;
    local_6b = false;
    local_a8 = 0;
  }
  else {
    if (local_6b == false) {
      local_6a = 0;
      local_a8 = 0;
      do {
        uVar17 = local_50;
        cVar5 = (char)uVar14;
        if ((*(byte *)(lVar22 + 0x20) == 0) || (*(char *)(lVar22 + 0x49) != cVar5)) {
          if ((cVar5 == *(char *)(lVar22 + 0x48)) ||
             (pvVar11 = memchr((void *)(lVar22 + 0x72),(int)cVar5,local_a0), pvVar11 == (void *)0x0)
             ) goto LAB_003489c8;
          iVar6 = (int)pvVar11 - (int)(void *)(lVar22 + 0x72);
          if (0xf < iVar6) {
            iVar6 = iVar6 + -6;
          }
          if (local_a8 <= uVar10 / uVar18) {
            uVar17 = local_a8 * uVar18;
            local_a8 = (long)iVar6 + uVar17;
            local_6a = local_6a | uVar10 - (long)iVar6 < uVar17;
            iVar8 = iVar8 + 1;
            goto LAB_00348c3c;
          }
          uVar17 = param_2[2];
          local_6a = bVar3;
          if (uVar17 < (ulong)param_2[3]) goto LAB_00348c46;
LAB_00348c9f:
          (**(code **)(*param_2 + 0x50))(param_2);
          local_b8._0_1_ = 0;
          if ((ulong)param_2[3] <= (ulong)param_2[2]) {
LAB_00348cc0:
            iVar6 = (**(code **)(*param_2 + 0x48))(param_2);
            local_b8._0_1_ = 0;
            if (iVar6 == -1) {
              param_2 = (long *)0x0;
              local_b8._0_1_ = bVar3;
            }
          }
        }
        else {
          if (iVar8 == 0) {
            bVar21 = 0;
            local_6b = (bool)*(byte *)(lVar22 + 0x20);
            goto joined_r0x003487e4;
          }
          uVar1 = local_50 + 1;
          if (local_58 == &local_48) {
            uVar13 = 0xf;
          }
          else {
            uVar13 = CONCAT71(uStack_47,local_48);
          }
          if (uVar13 < uVar1) {
            FUN_002e1960(&local_58,local_50,0,0,1);
          }
          local_b0 = (undefined1)iVar8;
          iVar8 = 0;
          local_58[uVar17] = local_b0;
          local_58[uVar1] = 0;
          local_50 = uVar1;
LAB_00348c3c:
          uVar17 = param_2[2];
          if ((ulong)param_2[3] <= uVar17) goto LAB_00348c9f;
LAB_00348c46:
          local_b8._0_1_ = 0;
          param_2[2] = uVar17 + 1;
          if ((ulong)param_2[3] <= (ulong)param_2[2]) goto LAB_00348cc0;
        }
        bVar4 = local_c0 != (long *)0x0 && bVar25;
        bVar24 = bVar25;
        if (bVar4) {
          if ((ulong)local_c0[2] < (ulong)local_c0[3]) {
            bVar24 = false;
          }
          else {
            iVar6 = (**(code **)(*local_c0 + 0x48))(local_c0);
            plVar2 = (long *)0x0;
            if (iVar6 != -1) {
              plVar2 = local_c0;
            }
            bVar24 = iVar6 == -1 && bVar4;
            local_c0 = plVar2;
          }
        }
        if ((bool)(byte)local_b8 == bVar24) goto code_r0x00348c77;
        if (param_2 == (long *)0x0) {
          uVar14 = 0xffffffff;
        }
        else if ((byte *)param_2[2] < (byte *)param_2[3]) {
          uVar14 = (uint)*(byte *)param_2[2];
        }
        else {
                    /* try { // try from 003490d3 to 003490d5 has its CatchHandler @ 003492e0 */
          uVar14 = (**(code **)(*param_2 + 0x48))(param_2);
          if (uVar14 == 0xffffffff) {
            param_2 = (long *)0x0;
            uVar14 = 0xffffffff;
          }
        }
        local_b8 = 0xffffffff;
      } while( true );
    }
    local_a8 = 0;
    local_6a = 0;
    local_6b = false;
  }
joined_r0x003487e4:
  if (uVar17 == 0) {
    local_50 = 0;
    if ((bVar19) || (iVar8 != 0)) {
LAB_00348a5d:
      if (local_6b == false) {
        if (local_6a == 0) {
          uVar10 = -local_a8;
          if (!bVar23) {
            uVar10 = local_a8;
          }
          *param_8 = uVar10;
        }
        else {
          uVar10 = 0x8000000000000000;
          if (!bVar23) {
            uVar10 = 0x7fffffffffffffff;
          }
          *param_8 = uVar10;
          *param_7 = 4;
        }
        goto LAB_0034881d;
      }
    }
  }
  else {
    local_b0 = (undefined1)iVar8;
    uVar10 = uVar17 + 1;
    if (local_58 == &local_48) {
      uVar18 = 0xf;
    }
    else {
      uVar18 = CONCAT71(uStack_47,local_48);
    }
    if (uVar18 < uVar10) {
      local_50 = uVar17;
      FUN_002e1960(&local_58,uVar17,0,0,1);
    }
    local_58[uVar17] = local_b0;
    local_58[uVar10] = 0;
    local_50 = uVar10;
    cVar5 = FUN_003653d0(*(undefined8 *)(lVar22 + 0x10),*(undefined8 *)(lVar22 + 0x18),&local_58);
    if (cVar5 == '\0') {
      *param_7 = 4;
    }
    if (((iVar8 != 0) || (bVar19)) || (local_50 != 0)) goto LAB_00348a5d;
  }
  *param_8 = 0;
  *param_7 = 4;
LAB_0034881d:
  if (bVar21 != 0) {
    *param_7 = *param_7 | 2;
  }
  if (local_58 != &local_48) {
    FUN_002dac70();
  }
  auVar26._8_8_ = param_3 & 0xffffffff00000000 | local_b8;
  auVar26._0_8_ = param_2;
  return auVar26;
code_r0x00348c77:
  local_b8 = 0xffffffff;
  bVar21 = bVar3;
  uVar17 = local_50;
  goto joined_r0x003487e4;
LAB_003487c9:
  local_b8 = 0xffffffff;
  bVar21 = 1;
  uVar17 = local_50;
  goto joined_r0x003487e4;
LAB_003489c8:
  bVar21 = 0;
  uVar17 = local_50;
  goto joined_r0x003487e4;
}

