
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original name: read_cie<64, false>
   DWARF original prototype: bool read_cie<64,_false>(Eh_frame * this, Sized_relobj_file<64,_false>
   * object, uint shndx, uchar * symbols, section_size_type symbols_size, uchar * symbol_names,
   section_size_type symbol_names_size, uchar * pcontents, uchar * pcie, uchar * pcieend,
   Track_relocs<64,_false> * relocs, Offsets_to_cie * cies, New_cies * new_cies) */

bool __thiscall
gold::Eh_frame::read_cie<64,_false>
          (Eh_frame *this,Sized_relobj_file<64,_false> *object,uint shndx,uchar *symbols,
          section_size_type symbols_size,uchar *symbol_names,section_size_type symbol_names_size,
          uchar *pcontents,uchar *pcie,uchar *pcieend,Track_relocs<64,_false> *relocs,
          Offsets_to_cie *cies,New_cies *new_cies)

{
  uchar uVar1;
  pointer ppVar2;
  byte bVar3;
  bool bVar4;
  void *pvVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  Cie *cie1;
  byte bVar9;
  uchar *puVar10;
  byte *pbVar11;
  uchar *puVar12;
  pointer ppVar13;
  byte *__s;
  uchar *puVar14;
  byte bVar15;
  off_t oVar16;
  undefined1 *__in_chrg;
  pair<int,_gold::Cie*> *local_9c;
  char local_95;
  byte local_94;
  undefined1 local_8c [12];
  undefined1 *local_80;
  undefined8 local_70;
  Cie cie;
  
  bVar15 = 0;
  if (pcieend == pcie || (int)pcieend - (int)pcie < 0) {
    return false;
  }
  bVar9 = *pcie;
  if ((bVar9 & 0xfd) != 1) {
    return false;
  }
  __s = pcie + 1;
  pvVar5 = memchr(__s,0,(int)pcieend - (int)__s);
  if (pvVar5 == (void *)0x0) {
    return false;
  }
  puVar12 = (uchar *)((int)pvVar5 + 1);
  local_95 = '\x01';
  if ((pcie[1] == 'e') && (pcie[2] == 'h')) {
    if (pcie[3] != '\0') {
      return false;
    }
    if ((int)pcieend - (int)puVar12 < 8) {
      return false;
    }
    puVar12 = (uchar *)((int)pvVar5 + 9);
    local_95 = '\0';
    __s = pcie + 3;
  }
  if (pcieend <= puVar12) {
    return false;
  }
  while ((char)*puVar12 < '\0') {
    puVar12 = puVar12 + 1;
    if (pcieend == puVar12) {
      return false;
    }
  }
  puVar10 = puVar12 + 1;
  if (pcieend <= puVar10) {
    return false;
  }
  uVar1 = puVar12[1];
  while ((char)uVar1 < '\0') {
    puVar10 = puVar10 + 1;
    if (pcieend == puVar10) {
      return false;
    }
    uVar1 = *puVar10;
  }
  puVar12 = puVar10 + 1;
  if (bVar9 == 1) {
    if (pcieend == puVar12 || (int)pcieend - (int)puVar12 < 0) {
      return false;
    }
    pbVar11 = puVar10 + 2;
  }
  else {
    if (pcieend <= puVar12) {
      return false;
    }
    uVar1 = puVar10[1];
    while ((char)uVar1 < '\0') {
      puVar12 = puVar12 + 1;
      if (pcieend == puVar12) {
        return false;
      }
      uVar1 = *puVar12;
    }
    pbVar11 = puVar12 + 1;
  }
  local_94 = *__s;
  if (local_94 == 0x7a) {
    if (pcieend <= pbVar11) {
      return false;
    }
    while ((char)*pbVar11 < '\0') {
      pbVar11 = pbVar11 + 1;
      if (pcieend == pbVar11) {
        return false;
      }
    }
    local_94 = __s[1];
    pbVar11 = pbVar11 + 1;
    if (local_94 != 0) {
      __s = __s + 1;
      bVar9 = local_94;
      goto LAB_002210a7;
    }
LAB_002214ac:
    puVar12 = "";
  }
  else {
    bVar9 = local_94;
    if (local_94 == 0) goto LAB_002214ac;
LAB_002210a7:
    local_9c = (pair<int,_gold::Cie*> *)0xffffffff;
    local_94 = 0;
    do {
      if (bVar9 == 0x50) {
        if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {
          return false;
        }
        bVar9 = *pbVar11;
        pbVar11 = pbVar11 + 1;
        if ((bVar9 & 0x60) == 0x60) {
          return false;
        }
        bVar3 = bVar9 & 7;
        if (bVar3 == 2) {
          uVar7 = 2;
        }
        else {
          if (bVar3 < 3) {
            if (bVar3 != 0) {
              return false;
            }
          }
          else {
            if (bVar3 == 3) {
              uVar7 = 4;
              goto LAB_002213bf;
            }
            if (bVar3 != 4) {
              return false;
            }
          }
          uVar7 = 8;
        }
LAB_002213bf:
        uVar8 = (int)pcieend - (int)pbVar11;
        if ((bVar9 & 0xf0) == 0x50) {
          if (uVar8 < (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))) {
            return false;
          }
          pbVar11 = pbVar11 + (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)));
          uVar8 = (int)pcieend - (int)pbVar11;
        }
        local_9c = (pair<int,_gold::Cie*> *)((int)pbVar11 - (int)pcontents);
        if (uVar8 < uVar7) {
          return false;
        }
        pbVar11 = pbVar11 + uVar7;
      }
      else {
        if (bVar9 < 0x51) {
          if (bVar9 != 0x4c) {
            return false;
          }
          if ((int)pcieend - (int)pbVar11 < 1) {
            return false;
          }
        }
        else {
          if (bVar9 != 0x52) {
            if (bVar9 != 0x53) {
              return false;
            }
            goto LAB_002210d9;
          }
          if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {
            return false;
          }
          local_94 = *pbVar11;
          if (4 < (local_94 & 7)) {
            return false;
          }
          if ((1 << (local_94 & 7) & 0x1dU) == 0) {
            return false;
          }
        }
        pbVar11 = pbVar11 + 1;
      }
LAB_002210d9:
      __s = __s + 1;
      bVar9 = *__s;
    } while (bVar9 != 0);
    if (local_9c == (pair<int,_gold::Cie*> *)0xffffffff) goto LAB_002214ac;
    iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)(int)local_9c);
    if (0 < iVar6) {
      return false;
    }
    oVar16 = Track_relocs<64,_false>::next_offset(relocs);
    if (oVar16 != (int)local_9c) {
      return false;
    }
    uVar7 = Track_relocs<64,_false>::next_symndx(relocs);
    if (uVar7 == 0xffffffff) {
      return false;
    }
    uVar8 = (*(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x23])
                      (object);
    if (uVar7 < uVar8) {
      local_95 = '\0';
      puVar12 = "";
    }
    else {
      if (symbols_size / 0x18 <= uVar7) {
        return false;
      }
      if (symbol_names_size <= *(uint *)(symbols + uVar7 * 0x18)) {
        return false;
      }
      puVar12 = symbol_names + *(uint *)(symbols + uVar7 * 0x18);
    }
    iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)((int)local_9c + 1));
    if (iVar6 != 1) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/ehframe.cc",0x3af,"read_cie");
    }
  }
  iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)((int)pcieend - (int)pcontents));
  if (0 < iVar6) {
    return false;
  }
  puVar10 = (uchar *)0xffffffff;
  iVar6 = (int)(pcie + -8) - (int)pcontents;
  cie.object_ = (Relobj *)object;
  cie.shndx_ = shndx;
  cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;
  puVar14 = puVar12;
  if (puVar12 != (uchar *)0x0) {
    do {
      if (puVar10 == (uchar *)0x0) break;
      puVar10 = puVar10 + -1;
      uVar1 = *puVar14;
      puVar14 = puVar14 + (uint)bVar15 * -2 + 1;
    } while (uVar1 != '\0');
    puVar10 = puVar12 + (~(uint)puVar10 - 1);
  }
  cie.input_offset_ = iVar6;
  cie.fde_encoding_ = local_94;
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&cie.personality_name_,puVar12,puVar10,0);
  cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2;
  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =
       (pointer)0x0;
  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =
       (pointer)0x0;
  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =
       (pointer)0x0;
                    /* try { // try from 002212a1 to 002212a5 has its CatchHandler @ 00221595 */
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&cie.contents_,pcie,pcieend,0);
  if (local_95 != '\0') {
    local_70._0_4_ = &cie;
    std::
    _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>
    ::find(&(this->cie_offsets_)._M_t,(Cie **)&local_70);
    if ((_Rb_tree_header *)local_80 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {
      ppVar2 = (new_cies->
               super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>
               )._M_impl._M_finish;
      for (ppVar13 = (new_cies->
                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>
                     )._M_impl._M_start; ppVar13 != ppVar2; ppVar13 = ppVar13 + 1) {
        cie1 = ppVar13->first;
        bVar4 = operator==(cie1,&cie);
        if (bVar4) goto LAB_002212f4;
      }
    }
    else {
      cie1 = *(Cie **)(local_80 + 0x10);
LAB_002212f4:
      if (cie1 != (Cie *)0x0) {
                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */
        Relobj::add_merge_mapping
                  ((Relobj *)object,&this->super_Output_section_data,shndx,iVar6,
                   (int)pcieend - (int)(pcie + -8),-1);
        goto LAB_0022131f;
      }
    }
  }
  cie1 = (Cie *)operator_new(0x4c);
                    /* try { // try from 002214d8 to 002214dc has its CatchHandler @ 00221591 */
  Cie::Cie(cie1,&cie);
  local_70._4_4_ = (Cie *)CONCAT31(local_70._5_3_,local_95);
  local_70._0_4_ = cie1;
                    /* try { // try from 002214f9 to 002214fd has its CatchHandler @ 0022158d */
  std::vector<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>::
  emplace_back<std::pair<gold::Cie*,_bool>_>(new_cies,(pair<gold::Cie*,_bool> *)&local_70);
LAB_0022131f:
  local_9c = (pair<int,_gold::Cie*> *)&local_70;
  local_70._0_4_ = (Cie *)(pcie + -(int)pcontents);
  __in_chrg = local_8c;
  local_70._4_4_ = cie1;
  std::
  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>_>
  ::_M_emplace_unique<std::pair<int,_gold::Cie*>_>(&cies->_M_t,local_9c);
  Cie::~Cie(&cie,(int)__in_chrg);
  return true;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */

undefined4
FUN_00220f60(int param_1,int *param_2,undefined4 param_3,int param_4,uint param_5,int param_6,
            uint param_7,int param_8,byte *param_9,byte *param_10,undefined4 param_11,
            undefined4 param_12,undefined4 *param_13)

{
  int *piVar1;
  int iVar2;
  byte bVar3;
  char cVar4;
  void *pvVar5;
  byte *pbVar6;
  int iVar7;
  int ***pppiVar8;
  uint uVar9;
  int **ppiVar10;
  byte bVar11;
  uint uVar12;
  byte *pbVar13;
  int iVar14;
  int extraout_EDX;
  int *piVar15;
  int ****ppppiVar16;
  byte *pbVar17;
  int ***pppiVar18;
  byte bVar19;
  longlong lVar20;
  int ***pppiStack_b0;
  undefined1 auStack_ac [4];
  int local_a8;
  int ***local_a4;
  int local_a0;
  int ***local_9c;
  char local_95;
  int **local_94;
  undefined **local_90;
  undefined1 local_8c [12];
  int local_80 [4];
  int **local_70;
  int **local_6c;
  int *local_68;
  undefined4 local_64;
  int local_60;
  undefined1 local_5c;
  undefined1 *local_58 [2];
  undefined1 local_50 [16];
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined1 *local_34 [2];
  undefined1 local_2c [28];
  
  bVar19 = 0;
  local_90 = &__DT_PLTGOT;
  if (param_10 == param_9 || (int)param_10 - (int)param_9 < 0) {
    return 0;
  }
  if ((*param_9 & 0xfd) != 1) {
    return 0;
  }
  pbVar17 = param_9 + 1;
  local_94._0_1_ = *param_9;
  pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17);
  if (pvVar5 == (void *)0x0) {
    return 0;
  }
  pbVar13 = (byte *)((int)pvVar5 + 1);
  local_95 = '\x01';
  if ((param_9[1] == 0x65) && (param_9[2] == 0x68)) {
    if (param_9[3] != 0) {
      return 0;
    }
    if ((int)param_10 - (int)pbVar13 < 8) {
      return 0;
    }
    pbVar13 = (byte *)((int)pvVar5 + 9);
    local_95 = '\0';
    pbVar17 = param_9 + 3;
  }
  if (param_10 <= pbVar13) {
    return 0;
  }
  while ((char)*pbVar13 < '\0') {
    pbVar13 = pbVar13 + 1;
    if (param_10 == pbVar13) {
      return 0;
    }
  }
  pbVar6 = pbVar13 + 1;
  if (param_10 <= pbVar6) {
    return 0;
  }
  bVar11 = pbVar13[1];
  while ((char)bVar11 < '\0') {
    pbVar6 = pbVar6 + 1;
    if (param_10 == pbVar6) {
      return 0;
    }
    bVar11 = *pbVar6;
  }
  pbVar13 = pbVar6 + 1;
  if ((byte)local_94 == 1) {
    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {
      return 0;
    }
    pbVar13 = pbVar6 + 2;
  }
  else {
    if (param_10 <= pbVar13) {
      return 0;
    }
    bVar11 = pbVar6[1];
    while ((char)bVar11 < '\0') {
      pbVar13 = pbVar13 + 1;
      if (param_10 == pbVar13) {
        return 0;
      }
      bVar11 = *pbVar13;
    }
    pbVar13 = pbVar13 + 1;
  }
  local_94._0_1_ = *pbVar17;
  if ((byte)local_94 == 0x7a) {
    if (param_10 <= pbVar13) {
      return 0;
    }
    while ((char)*pbVar13 < '\0') {
      pbVar13 = pbVar13 + 1;
      if (param_10 == pbVar13) {
        return 0;
      }
    }
    local_94._0_1_ = pbVar17[1];
    pbVar13 = pbVar13 + 1;
    if ((byte)local_94 != 0) {
      pbVar17 = pbVar17 + 1;
      bVar11 = (byte)local_94;
      goto LAB_002210a7;
    }
LAB_002214ac:
    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);
  }
  else {
    bVar11 = (byte)local_94;
    if ((byte)local_94 == 0) goto LAB_002214ac;
LAB_002210a7:
    local_9c = (int ***)0xffffffff;
    local_94._0_1_ = 0;
    do {
      if (bVar11 == 0x50) {
        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {
          return 0;
        }
        bVar11 = *pbVar13;
        pbVar13 = pbVar13 + 1;
        if ((bVar11 & 0x60) == 0x60) {
          return 0;
        }
        bVar3 = bVar11 & 7;
        if (bVar3 == 2) {
          uVar9 = 2;
        }
        else {
          if (bVar3 < 3) {
            if (bVar3 != 0) {
              return 0;
            }
          }
          else {
            if (bVar3 == 3) {
              uVar9 = 4;
              goto LAB_002213bf;
            }
            if (bVar3 != 4) {
              return 0;
            }
          }
          uVar9 = 8;
        }
LAB_002213bf:
        uVar12 = (int)param_10 - (int)pbVar13;
        if ((bVar11 & 0xf0) == 0x50) {
          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {
            return 0;
          }
          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));
          uVar12 = (int)param_10 - (int)pbVar13;
        }
        local_9c = (int ***)((int)pbVar13 - param_8);
        if (uVar12 < uVar9) {
          return 0;
        }
        pbVar13 = pbVar13 + uVar9;
      }
      else {
        if (bVar11 < 0x51) {
          if (bVar11 != 0x4c) {
            return 0;
          }
          if ((int)param_10 - (int)pbVar13 < 1) {
            return 0;
          }
        }
        else {
          if (bVar11 != 0x52) {
            if (bVar11 != 0x53) {
              return 0;
            }
            goto LAB_002210d9;
          }
          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {
            return 0;
          }
          local_94._0_1_ = *pbVar13;
          if (4 < ((byte)local_94 & 7)) {
            return 0;
          }
          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {
            return 0;
          }
        }
        pbVar13 = pbVar13 + 1;
      }
LAB_002210d9:
      pbVar17 = pbVar17 + 1;
      bVar11 = *pbVar17;
    } while (bVar11 != 0);
    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;
    local_a0 = (int)local_9c >> 0x1f;
    local_a4 = local_9c;
    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);
    if (0 < iVar7) {
      return 0;
    }
    lVar20 = FUN_001b4420(param_11);
    if (lVar20 != CONCAT44(local_a0,local_9c)) {
      return 0;
    }
    pppiStack_b0 = (int ***)FUN_001b4450(param_11);
    if (pppiStack_b0 == (int ***)0xffffffff) {
      return 0;
    }
    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);
    if (pppiStack_b0 < pppiVar8) {
      local_95 = '\0';
      local_a4 = (int ***)((int)local_90 + -0x102e4a);
    }
    else {
      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {
        return 0;
      }
      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);
      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {
        return 0;
      }
      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);
    }
    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);
    pppiVar8 = local_a4;
    if (iVar7 != 1) {
      pppiStack_b0 = (int ***)(uint)(byte)local_94;
                    /* WARNING: Subroutine does not return */
      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);
    }
  }
  pppiVar18 = (int ***)(param_10 + -param_8);
  local_9c = pppiVar8;
  iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f);
  if (0 < iVar7) {
    return 0;
  }
  local_5c = (byte)local_94;
  pbVar17 = (byte *)0xffffffff;
  local_a4 = (int ***)(param_9 + -8);
  iVar7 = (int)local_a4 - param_8;
  local_68 = param_2;
  local_64 = param_3;
  local_94 = (int **)local_50;
  pppiVar8 = local_9c;
  if (local_9c != (int ***)0x0) {
    do {
      pppiVar18 = pppiVar8;
      if (pbVar17 == (byte *)0x0) break;
      pbVar17 = pbVar17 + -1;
      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);
      bVar11 = *(byte *)pppiVar8;
      pppiVar8 = pppiVar18;
    } while (bVar11 != 0);
    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));
  }
  pppiStack_b0 = (int ***)0x0;
  local_60 = iVar7;
  local_58[0] = (undefined1 *)local_94;
  FUN_000a8880(local_58,local_9c,pbVar17);
  local_34[0] = local_2c;
  local_40 = 0;
  pppiStack_b0 = (int ***)0x0;
  local_3c = 0;
  local_38 = 0;
                    /* try { // try from 002212a1 to 002212a5 has its CatchHandler @ 00221595 */
  FUN_000a8880(local_34,param_9,param_10);
  local_94 = &local_68;
  ppppiVar16 = (int ****)auStack_ac;
  iVar2 = local_a8;
  if (local_95 != '\0') {
    local_9c = &local_70;
    pppiStack_b0 = pppiVar18;
    local_70 = local_94;
    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);
    iVar14 = param_1 + 0x34;
    if (local_80[0] == iVar14) {
      piVar1 = (int *)param_13[1];
      iVar2 = local_a8;
      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,
          piVar15 != piVar1; piVar15 = piVar15 + 2) {
        ppiVar10 = (int **)*piVar15;
        cVar4 = FUN_0021a660(ppiVar10,local_94);
        iVar14 = extraout_EDX;
        iVar7 = local_a8;
        if (cVar4 != '\0') goto LAB_002212f4;
        iVar2 = local_a8;
      }
    }
    else {
      ppiVar10 = *(int ***)(local_80[0] + 0x10);
LAB_002212f4:
      ppppiVar16 = &pppiStack_b0;
      iVar2 = local_a8;
      if (ppiVar10 != (int **)0x0) {
                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */
        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,
                     iVar14);
        ppppiVar16 = &pppiStack_b0;
        goto LAB_0022131f;
      }
    }
  }
  local_a8 = iVar2;
  ppppiVar16[-4] = (int ***)0x4c;
  ppppiVar16[-5] = (int ***)0x2214cd;
  ppiVar10 = (int **)FUN_00246670();
  ppppiVar16[-3] = (int ***)local_94;
  ppppiVar16[-4] = (int ***)ppiVar10;
                    /* try { // try from 002214d8 to 002214dc has its CatchHandler @ 00221591 */
  ppppiVar16[-5] = (int ***)0x2214dd;
  FUN_0021dba0();
  local_6c = (int **)CONCAT31(local_6c._1_3_,local_95);
  local_9c = &local_70;
  ppppiVar16[-3] = local_9c;
  ppppiVar16[-4] = (int ***)param_13;
                    /* try { // try from 002214f9 to 002214fd has its CatchHandler @ 0022158d */
  ppppiVar16[-5] = (int ***)0x2214fe;
  local_70 = ppiVar10;
  FUN_0021fa00();
LAB_0022131f:
  local_70 = (int **)(param_9 + -param_8);
  *(int ****)((int)ppppiVar16 + -8) = local_9c;
  *(undefined4 *)((int)ppppiVar16 + -0xc) = param_12;
  *(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c;
  *(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343;
  local_6c = ppiVar10;
  FUN_0021ef70();
  *(int ***)((int)ppppiVar16 + -0x14) = local_94;
  *(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e;
  FUN_0021a270();
  return 1;
}


CALL 0x000b4846
ADD EAX,0x1f309b
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x9c
MOV ESI,dword ptr [EBP + 0x2c]
MOV dword ptr [EBP + 0xffffff74],EAX
MOV EAX,ESI
SUB EAX,dword ptr [EBP + 0x28]
TEST EAX,EAX
JLE 0x00221018
MOV EAX,dword ptr [EBP + 0x28]
MOVZX ECX,byte ptr [EAX]
MOV EAX,ECX
MOV byte ptr [EBP + 0xffffff70],CL
AND EAX,0xfffffffd
CMP AL,0x1
JNZ 0x00221018
MOV EAX,dword ptr [EBP + 0x28]
SUB ESP,0x4
MOV EBX,dword ptr [EBP + 0xffffff74]
LEA EDI,[EAX + 0x1]
MOV EAX,ESI
SUB EAX,EDI
PUSH EAX
PUSH 0x0
PUSH EDI
CALL 0x0002c430
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00221018
MOV EBX,dword ptr [EBP + 0x28]
LEA EDX,[EAX + 0x1]
MOV byte ptr [EBP + 0xffffff6f],0x1
MOVZX ECX,byte ptr [EBP + 0xffffff70]
CMP byte ptr [EBX + 0x1],0x65
JZ 0x00221050
CMP ESI,EDX
JA 0x00220fef
JMP 0x00221018
ADD EDX,0x1
CMP ESI,EDX
JZ 0x00221018
CMP byte ptr [EDX],0x0
JS 0x00220fe8
LEA EAX,[EDX + 0x1]
CMP ESI,EAX
JBE 0x00221018
CMP byte ptr [EDX + 0x1],0x0
JS 0x0022100d
JMP 0x00221028
CMP byte ptr [EAX],0x0
JNS 0x00221028
ADD EAX,0x1
CMP ESI,EAX
JNZ 0x00221008
LEA ESI,[ESI]
XOR EAX,EAX
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EDX,[EAX + 0x1]
CMP CL,0x1
JZ 0x00221080
CMP ESI,EDX
JBE 0x00221018
CMP byte ptr [EAX + 0x1],0x0
JS 0x00221045
JMP 0x00221090
CMP byte ptr [EDX],0x0
JNS 0x00221090
ADD EDX,0x1
CMP ESI,EDX
JNZ 0x00221040
JMP 0x00221018
CMP byte ptr [EBX + 0x2],0x68
JNZ 0x00220fde
CMP byte ptr [EBX + 0x3],0x0
JNZ 0x00221018
MOV EBX,ESI
SUB EBX,EDX
CMP EBX,0x7
JLE 0x00221018
MOV EBX,dword ptr [EBP + 0x28]
LEA EDX,[EAX + 0x9]
MOV byte ptr [EBP + 0xffffff6f],0x0
LEA EDI,[EBX + 0x3]
JMP 0x00220fde
MOV EBX,ESI
SUB EBX,EDX
TEST EBX,EBX
JLE 0x00221018
LEA EDX,[EAX + 0x2]
JMP 0x00221093
ADD EDX,0x1
MOVZX ECX,byte ptr [EDI]
CMP CL,0x7a
JZ 0x00221468
TEST CL,CL
JZ 0x002214ac
MOV dword ptr [EBP + 0xffffff68],0xffffffff
MOV byte ptr [EBP + 0xffffff70],0x0
CMP CL,0x50
JZ 0x00221380
JBE 0x00221360
CMP CL,0x52
JZ 0x002213f0
CMP CL,0x53
JNZ 0x00221018
ADD EDI,0x1
MOVZX ECX,byte ptr [EDI]
TEST CL,CL
JNZ 0x002210b8
MOV EAX,dword ptr [EBP + 0xffffff68]
CMP EAX,-0x1
JZ 0x002214a5
SUB ESP,0x4
CDQ
MOV EBX,dword ptr [EBP + 0xffffff74]
MOV dword ptr [EBP + 0xffffff60],EAX
PUSH EDX
PUSH EAX
PUSH dword ptr [EBP + 0x30]
MOV dword ptr [EBP + 0xffffff64],EDX
CALL 0x001b4510
ADD ESP,0x10
TEST EAX,EAX
JG 0x00221018
SUB ESP,0xc
PUSH dword ptr [EBP + 0x30]
MOV EBX,dword ptr [EBP + 0xffffff74]
CALL 0x001b4420
XOR EAX,dword ptr [EBP + 0xffffff68]
XOR EDX,dword ptr [EBP + 0xffffff64]
ADD ESP,0x10
OR EDX,EAX
JNZ 0x00221018
SUB ESP,0xc
PUSH dword ptr [EBP + 0x30]
MOV EBX,dword ptr [EBP + 0xffffff74]
CALL 0x001b4450
ADD ESP,0x10
MOV EBX,EAX
CMP EAX,-0x1
JZ 0x00221018
MOV EAX,dword ptr [EBP + 0xc]
SUB ESP,0xc
MOV EAX,dword ptr [EAX]
PUSH dword ptr [EBP + 0xc]
CALL dword ptr [EAX + 0x8c]
ADD ESP,0x10
CMP EBX,EAX
JC 0x00221525
MOV EAX,dword ptr [EBP + 0x18]
MOV ECX,0x18
XOR EDX,EDX
DIV ECX
CMP EAX,EBX
JBE 0x00221018
IMUL EBX,EBX,0x18
MOV EAX,dword ptr [EBP + 0x14]
MOV EDX,dword ptr [EAX + EBX*0x1]
CMP dword ptr [EBP + 0x20],EDX
JBE 0x00221018
ADD EDX,dword ptr [EBP + 0x1c]
MOV ECX,dword ptr [EBP + 0xffffff68]
PUSH EBX
MOV dword ptr [EBP + 0xffffff60],EDX
ADD ECX,0x1
MOV EBX,ECX
SAR EBX,0x1f
PUSH EBX
MOV EBX,dword ptr [EBP + 0xffffff74]
PUSH ECX
PUSH dword ptr [EBP + 0x30]
CALL 0x001b4510
ADD ESP,0x10
MOVZX ECX,byte ptr [EBP + 0xffffff70]
MOV EDX,dword ptr [EBP + 0xffffff60]
SUB EAX,0x1
JNZ 0x00221506
MOV EDI,ESI
SUB EDI,dword ptr [EBP + 0x24]
SUB ESP,0x4
MOV dword ptr [EBP + 0xffffff68],EDX
MOV EAX,EDI
MOV EBX,dword ptr [EBP + 0xffffff74]
MOV byte ptr [EBP + 0xffffff70],CL
CDQ
PUSH EDX
PUSH EDI
PUSH dword ptr [EBP + 0x30]
CALL 0x001b4510
ADD ESP,0x10
MOVZX ECX,byte ptr [EBP + 0xffffff70]
MOV EDX,dword ptr [EBP + 0xffffff68]
TEST EAX,EAX
JG 0x00221018
MOV EAX,dword ptr [EBP + 0x28]
MOV byte ptr [EBP + -0x58],CL
MOV ECX,0xffffffff
SUB EAX,0x8
MOV dword ptr [EBP + 0xffffff60],EAX
SUB EAX,dword ptr [EBP + 0x24]
MOV EBX,EAX
MOV EAX,dword ptr [EBP + 0xc]
MOV dword ptr [EBP + -0x5c],EBX
MOV dword ptr [EBP + -0x64],EAX
MOV EAX,dword ptr [EBP + 0x10]
MOV dword ptr [EBP + -0x60],EAX
LEA EAX,[EBP + -0x4c]
MOV dword ptr [EBP + 0xffffff70],EAX
MOV dword ptr [EBP + -0x54],EAX
TEST EDX,EDX
JZ 0x0022126c
XOR EAX,EAX
MOV EDI,EDX
SCASB.REPNE ES:EDI
NOT ECX
LEA EAX,[EDX + ECX*0x1 + -0x1]
MOV ECX,EAX
LEA EAX,[EBP + -0x54]
PUSH 0x0
PUSH ECX
PUSH EDX
PUSH EAX
CALL 0x000a8880
LEA EAX,[EBP + -0x28]
ADD ESP,0x10
MOV dword ptr [EBP + -0x3c],0x0
MOV dword ptr [EBP + -0x30],EAX
LEA EAX,[EBP + -0x30]
PUSH 0x0
PUSH ESI
PUSH dword ptr [EBP + 0x28]
PUSH EAX
MOV dword ptr [EBP + -0x38],0x0
MOV dword ptr [EBP + -0x34],0x0
CALL 0x000a8880
ADD ESP,0x10
LEA EAX,[EBP + -0x64]
CMP byte ptr [EBP + 0xffffff6f],0x0
MOV dword ptr [EBP + 0xffffff70],EAX
JZ 0x002214bd
PUSH EDI
LEA EDI,[EBP + -0x6c]
PUSH EDI
MOV dword ptr [EBP + 0xffffff68],EDI
MOV EDI,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x6c],EAX
LEA EAX,[EBP + -0x7c]
LEA EDX,[EDI + 0x30]
PUSH EDX
PUSH EAX
CALL 0x0021b4b0
MOV EDI,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EBP + -0x7c]
ADD ESP,0xc
LEA EDX,[EDI + 0x34]
CMP EAX,EDX
JZ 0x0022153d
MOV EDI,dword ptr [EAX + 0x10]
TEST EDI,EDI
JZ 0x002214bd
SUB ESI,dword ptr [EBP + 0xffffff60]
PUSH EDX
PUSH EDX
PUSH -0x1
PUSH ESI
PUSH EBX
MOV EBX,dword ptr [EBP + 0xffffff74]
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0x8]
PUSH dword ptr [EBP + 0xc]
CALL 0x00121dd0
ADD ESP,0x20
MOV EAX,dword ptr [EBP + 0x28]
SUB EAX,dword ptr [EBP + 0x24]
SUB ESP,0x4
PUSH dword ptr [EBP + 0xffffff68]
MOV dword ptr [EBP + -0x6c],EAX
LEA EAX,[EBP + 0xffffff78]
PUSH dword ptr [EBP + 0x34]
PUSH EAX
MOV dword ptr [EBP + -0x68],EDI
CALL 0x0021ef70
PUSH dword ptr [EBP + 0xffffff70]
CALL 0x0021a270
ADD ESP,0x10
MOV EAX,0x1
JMP 0x0022101a
CMP CL,0x4c
JNZ 0x00221018
MOV EAX,ESI
SUB EAX,EDX
TEST EAX,EAX
JLE 0x00221018
ADD EDX,0x1
JMP 0x002210d9
MOV EAX,ESI
SUB EAX,EDX
TEST EAX,EAX
JLE 0x00221018
MOVZX EBX,byte ptr [EDX]
ADD EDX,0x1
MOV EAX,EBX
AND EAX,0x60
CMP AL,0x60
JZ 0x00221018
MOV EAX,EBX
AND EAX,0x7
CMP AL,0x2
JZ 0x0022149b
JBE 0x002213e5
CMP AL,0x3
JZ 0x00221430
CMP AL,0x4
JNZ 0x00221018
MOV EAX,0x8
MOV ECX,ESI
AND EBX,0xfffffff0
SUB ECX,EDX
CMP BL,0x50
JZ 0x00221437
MOV EBX,EDX
SUB EBX,dword ptr [EBP + 0x24]
MOV dword ptr [EBP + 0xffffff68],EBX
CMP ECX,EAX
JC 0x00221018
ADD EDX,EAX
JMP 0x002210d9
TEST AL,AL
JZ 0x002213ba
JMP 0x00221018
MOV EAX,ESI
SUB EAX,EDX
TEST EAX,EAX
JLE 0x00221018
MOVZX EAX,byte ptr [EDX]
MOV ECX,EAX
MOV byte ptr [EBP + 0xffffff70],AL
AND ECX,0x7
CMP CL,0x4
JA 0x00221018
MOV EAX,0x1
SHL EAX,CL
TEST AL,0x1d
JNZ 0x00221375
JMP 0x00221018
MOV EAX,0x4
JMP 0x002213bf
MOV EBX,EDX
SUB EBX,dword ptr [EBP + 0x28]
LEA EBX,[EAX + EBX*0x1 + -0x1]
MOV dword ptr [EBP + 0xffffff68],EBX
MOV EBX,EAX
NEG EBX
AND EBX,dword ptr [EBP + 0xffffff68]
CMP EBX,ECX
JA 0x00221018
ADD EDX,EBX
MOV ECX,ESI
SUB ECX,EDX
JMP 0x002213cb
CMP ESI,EDX
JA 0x00221483
JMP 0x00221018
ADD EDX,0x1
CMP ESI,EDX
JZ 0x00221018
CMP byte ptr [EDX],0x0
JS 0x00221478
MOVZX ECX,byte ptr [EDI + 0x1]
ADD EDX,0x1
TEST CL,CL
JZ 0x002214ac
ADD EDI,0x1
JMP 0x002210a7
MOV EAX,0x2
JMP 0x002213bf
MOVZX ECX,byte ptr [EBP + 0xffffff70]
MOV EAX,dword ptr [EBP + 0xffffff74]
LEA EDX,[EAX + 0xffefd1b6]
JMP 0x002211e7
SUB ESP,0xc
MOV EBX,dword ptr [EBP + 0xffffff74]
PUSH 0x4c
CALL 0x00246670
MOV EDI,EAX
POP EAX
POP EDX
PUSH dword ptr [EBP + 0xffffff70]
PUSH EDI
CALL 0x0021dba0
MOVZX EAX,byte ptr [EBP + 0xffffff6f]
POP ECX
MOV dword ptr [EBP + -0x6c],EDI
POP EBX
MOV byte ptr [EBP + -0x68],AL
LEA EAX,[EBP + -0x6c]
PUSH EAX
PUSH dword ptr [EBP + 0x38]
MOV dword ptr [EBP + 0xffffff68],EAX
CALL 0x0021fa00
ADD ESP,0x10
JMP 0x0022131f
MOV EBX,dword ptr [EBP + 0xffffff74]
PUSH ECX
LEA EAX,[EBX + 0xffefda5c]
PUSH EAX
LEA EAX,[EBX + 0xffefd987]
PUSH 0x3af
PUSH EAX
CALL 0x000da200
MOV EAX,dword ptr [EBP + 0xffffff74]
MOV byte ptr [EBP + 0xffffff6f],0x0
LEA EDX,[EAX + 0xffefd1b6]
JMP 0x002211a9
MOV EAX,dword ptr [EBP + 0x38]
MOV EDX,dword ptr [EAX]
MOV ECX,dword ptr [EAX + 0x4]
CMP EDX,ECX
JZ 0x002214bd
MOV dword ptr [EBP + 0xffffff5c],EBX
MOV EBX,EDX
MOV dword ptr [EBP + 0x2c],ESI
MOV ESI,ECX
JMP 0x00221567
ADD EBX,0x8
CMP ESI,EBX
JZ 0x002214bd
MOV EDI,dword ptr [EBX]
SUB ESP,0x8
PUSH dword ptr [EBP + 0xffffff70]
PUSH EDI
CALL 0x0021a660
ADD ESP,0x10
TEST AL,AL
JZ 0x0022155c
MOV EBX,dword ptr [EBP + 0xffffff5c]
MOV ESI,dword ptr [EBP + 0x2c]
JMP 0x002212f4
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Type propagation algorithm not settling */\n\nundefined4\nFUN_00220f60(int param_1,int *param_2,undefined4 param_3,int param_4,uint param_5,int param_6,\n            uint param_7,int param_8,byte *param_9,byte *param_10,undefined4 param_11,\n            undefined4 param_12,undefined4 *param_13)\n\n{\n  int *piVar1;\n  int iVar2;\n  byte bVar3;\n  char cVar4;\n  void *pvVar5;\n  byte *pbVar6;\n  int iVar7;\n  int ***pppiVar8;\n  uint uVar9;\n  int **ppiVar10;\n  byte bVar11;\n  uint uVar12;\n  byte *pbVar13;\n  int iVar14;\n  int extraout_EDX;\n  int *piVar15;\n  int ****ppppiVar16;\n  byte *pbVar17;\n  int ***pppiVar18;\n  byte bVar19;\n  longlong lVar20;\n  int ***pppiStack_b0;\n  undefined1 auStack_ac [4];\n  int local_a8;\n  int ***local_a4;\n  int local_a0;\n  int ***local_9c;\n  char local_95;\n  int **local_94;\n  undefined **local_90;\n  undefined1 local_8c [12];\n  int local_80 [4];\n  int **local_70;\n  int **local_6c;\n  int *local_68;\n  undefined4 local_64;\n  int local_60;\n  undefined1 local_5c;\n  undefined1 *local_58 [2];\n  undefined1 local_50 [16];\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar19 = 0;\n  local_90 = &__DT_PLTGOT;\n  if (param_10 == param_9 || (int)param_10 - (int)param_9 < 0) {\n    return 0;\n  }\n  if ((*param_9 & 0xfd) != 1) {\n    return 0;\n  }\n  pbVar17 = param_9 + 1;\n  local_94._0_1_ = *param_9;\n  pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17);\n  if (pvVar5 == (void *)0x0) {\n    return 0;\n  }\n  pbVar13 = (byte *)((int)pvVar5 + 1);\n  local_95 = '\x01';\n  if ((param_9[1] == 0x65) && (param_9[2] == 0x68)) {\n    if (param_9[3] != 0) {\n      return 0;\n    }\n    if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }\n    pbVar13 = (byte *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    pbVar17 = param_9 + 3;\n  }\n  if (param_10 <= pbVar13) {\n    return 0;\n  }\n  while ((char)*pbVar13 < '\0') {\n    pbVar13 = pbVar13 + 1;\n    if (param_10 == pbVar13) {\n      return 0;\n    }\n  }\n  pbVar6 = pbVar13 + 1;\n  if (param_10 <= pbVar6) {\n    return 0;\n  }\n  bVar11 = pbVar13[1];\n  while ((char)bVar11 < '\0') {\n    pbVar6 = pbVar6 + 1;\n    if (param_10 == pbVar6) {\n      return 0;\n    }\n    bVar11 = *pbVar6;\n  }\n  pbVar13 = pbVar6 + 1;\n  if ((byte)local_94 == 1) {\n    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }\n    pbVar13 = pbVar6 + 2;\n  }\n  else {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }\n  local_94._0_1_ = *pbVar17;\n  if ((byte)local_94 == 0x7a) {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }\n    local_94._0_1_ = pbVar17[1];\n    pbVar13 = pbVar13 + 1;\n    if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);\n  }\n  else {\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    /* WARNING: Subroutine does not return */\n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }\n  pppiVar18 = (int ***)(param_10 + -param_8);\n  local_9c = pppiVar8;\n  iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f);\n  if (0 < iVar7) {\n    return 0;\n  }\n  local_5c = (byte)local_94;\n  pbVar17 = (byte *)0xffffffff;\n  local_a4 = (int ***)(param_9 + -8);\n  iVar7 = (int)local_a4 - param_8;\n  local_68 = param_2;\n  local_64 = param_3;\n  local_94 = (int **)local_50;\n  pppiVar8 = local_9c;\n  if (local_9c != (int ***)0x0) {\n    do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);\n    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));\n  }\n  pppiStack_b0 = (int ***)0x0;\n  local_60 = iVar7;\n  local_58[0] = (undefined1 *)local_94;\n  FUN_000a8880(local_58,local_9c,pbVar17);\n  local_34[0] = local_2c;\n  local_40 = 0;\n  pppiStack_b0 = (int ***)0x0;\n  local_3c = 0;\n  local_38 = 0;\n                    /* try { // try from 002212a1 to 002212a5 has its CatchHandler @ 00221595 */\n  FUN_000a8880(local_34,param_9,param_10);\n  local_94 = &local_68;\n  ppppiVar16 = (int ****)auStack_ac;\n  iVar2 = local_a8;\n  if (local_95 != '\0') {\n    local_9c = &local_70;\n    pppiStack_b0 = pppiVar18;\n    local_70 = local_94;\n    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);\n    iVar14 = param_1 + 0x34;\n    if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }\n  }\n  local_a8 = iVar2;\n  ppppiVar16[-4] = (int ***)0x4c;\n  ppppiVar16[-5] = (int ***)0x2214cd;\n  ppiVar10 = (int **)FUN_00246670();\n  ppppiVar16[-3] = (int ***)local_94;\n  ppppiVar16[-4] = (int ***)ppiVar10;\n                    /* try { // try from 002214d8 to 002214dc has its CatchHandler @ 00221591 */\n  ppppiVar16[-5] = (int ***)0x2214dd;\n  FUN_0021dba0();\n  local_6c = (int **)CONCAT31(local_6c._1_3_,local_95);\n  local_9c = &local_70;\n  ppppiVar16[-3] = local_9c;\n  ppppiVar16[-4] = (int ***)param_13;\n                    /* try { // try from 002214f9 to 002214fd has its CatchHandler @ 0022158d */\n  ppppiVar16[-5] = (int ***)0x2214fe;\n  local_70 = ppiVar10;\n  FUN_0021fa00();\nLAB_0022131f:\n  local_70 = (int **)(param_9 + -param_8);\n  *(int ****)((int)ppppiVar16 + -8) = local_9c;\n  *(undefined4 *)((int)ppppiVar16 + -0xc) = param_12;\n  *(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c;\n  *(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343;\n  local_6c = ppiVar10;\n  FUN_0021ef70();\n  *(int ***)((int)ppppiVar16 + -0x14) = local_94;\n  *(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e;\n  FUN_0021a270();\n  return 1;\n}\n\n" comment comment (function_definition "undefined4\nFUN_00220f60(int param_1,int *param_2,undefined4 param_3,int param_4,uint param_5,int param_6,\n            uint param_7,int param_8,byte *param_9,byte *param_10,undefined4 param_11,\n            undefined4 param_12,undefined4 *param_13)\n\n{\n  int *piVar1;\n  int iVar2;\n  byte bVar3;\n  char cVar4;\n  void *pvVar5;\n  byte *pbVar6;\n  int iVar7;\n  int ***pppiVar8;\n  uint uVar9;\n  int **ppiVar10;\n  byte bVar11;\n  uint uVar12;\n  byte *pbVar13;\n  int iVar14;\n  int extraout_EDX;\n  int *piVar15;\n  int ****ppppiVar16;\n  byte *pbVar17;\n  int ***pppiVar18;\n  byte bVar19;\n  longlong lVar20;\n  int ***pppiStack_b0;\n  undefined1 auStack_ac [4];\n  int local_a8;\n  int ***local_a4;\n  int local_a0;\n  int ***local_9c;\n  char local_95;\n  int **local_94;\n  undefined **local_90;\n  undefined1 local_8c [12];\n  int local_80 [4];\n  int **local_70;\n  int **local_6c;\n  int *local_68;\n  undefined4 local_64;\n  int local_60;\n  undefined1 local_5c;\n  undefined1 *local_58 [2];\n  undefined1 local_50 [16];\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar19 = 0;\n  local_90 = &__DT_PLTGOT;\n  if (param_10 == param_9 || (int)param_10 - (int)param_9 < 0) {\n    return 0;\n  }\n  if ((*param_9 & 0xfd) != 1) {\n    return 0;\n  }\n  pbVar17 = param_9 + 1;\n  local_94._0_1_ = *param_9;\n  pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17);\n  if (pvVar5 == (void *)0x0) {\n    return 0;\n  }\n  pbVar13 = (byte *)((int)pvVar5 + 1);\n  local_95 = '\x01';\n  if ((param_9[1] == 0x65) && (param_9[2] == 0x68)) {\n    if (param_9[3] != 0) {\n      return 0;\n    }\n    if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }\n    pbVar13 = (byte *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    pbVar17 = param_9 + 3;\n  }\n  if (param_10 <= pbVar13) {\n    return 0;\n  }\n  while ((char)*pbVar13 < '\0') {\n    pbVar13 = pbVar13 + 1;\n    if (param_10 == pbVar13) {\n      return 0;\n    }\n  }\n  pbVar6 = pbVar13 + 1;\n  if (param_10 <= pbVar6) {\n    return 0;\n  }\n  bVar11 = pbVar13[1];\n  while ((char)bVar11 < '\0') {\n    pbVar6 = pbVar6 + 1;\n    if (param_10 == pbVar6) {\n      return 0;\n    }\n    bVar11 = *pbVar6;\n  }\n  pbVar13 = pbVar6 + 1;\n  if ((byte)local_94 == 1) {\n    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }\n    pbVar13 = pbVar6 + 2;\n  }\n  else {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }\n  local_94._0_1_ = *pbVar17;\n  if ((byte)local_94 == 0x7a) {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }\n    local_94._0_1_ = pbVar17[1];\n    pbVar13 = pbVar13 + 1;\n    if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);\n  }\n  else {\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    /* WARNING: Subroutine does not return */\n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }\n  pppiVar18 = (int ***)(param_10 + -param_8);\n  local_9c = pppiVar8;\n  iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f);\n  if (0 < iVar7) {\n    return 0;\n  }\n  local_5c = (byte)local_94;\n  pbVar17 = (byte *)0xffffffff;\n  local_a4 = (int ***)(param_9 + -8);\n  iVar7 = (int)local_a4 - param_8;\n  local_68 = param_2;\n  local_64 = param_3;\n  local_94 = (int **)local_50;\n  pppiVar8 = local_9c;\n  if (local_9c != (int ***)0x0) {\n    do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);\n    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));\n  }\n  pppiStack_b0 = (int ***)0x0;\n  local_60 = iVar7;\n  local_58[0] = (undefined1 *)local_94;\n  FUN_000a8880(local_58,local_9c,pbVar17);\n  local_34[0] = local_2c;\n  local_40 = 0;\n  pppiStack_b0 = (int ***)0x0;\n  local_3c = 0;\n  local_38 = 0;\n                    /* try { // try from 002212a1 to 002212a5 has its CatchHandler @ 00221595 */\n  FUN_000a8880(local_34,param_9,param_10);\n  local_94 = &local_68;\n  ppppiVar16 = (int ****)auStack_ac;\n  iVar2 = local_a8;\n  if (local_95 != '\0') {\n    local_9c = &local_70;\n    pppiStack_b0 = pppiVar18;\n    local_70 = local_94;\n    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);\n    iVar14 = param_1 + 0x34;\n    if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }\n  }\n  local_a8 = iVar2;\n  ppppiVar16[-4] = (int ***)0x4c;\n  ppppiVar16[-5] = (int ***)0x2214cd;\n  ppiVar10 = (int **)FUN_00246670();\n  ppppiVar16[-3] = (int ***)local_94;\n  ppppiVar16[-4] = (int ***)ppiVar10;\n                    /* try { // try from 002214d8 to 002214dc has its CatchHandler @ 00221591 */\n  ppppiVar16[-5] = (int ***)0x2214dd;\n  FUN_0021dba0();\n  local_6c = (int **)CONCAT31(local_6c._1_3_,local_95);\n  local_9c = &local_70;\n  ppppiVar16[-3] = local_9c;\n  ppppiVar16[-4] = (int ***)param_13;\n                    /* try { // try from 002214f9 to 002214fd has its CatchHandler @ 0022158d */\n  ppppiVar16[-5] = (int ***)0x2214fe;\n  local_70 = ppiVar10;\n  FUN_0021fa00();\nLAB_0022131f:\n  local_70 = (int **)(param_9 + -param_8);\n  *(int ****)((int)ppppiVar16 + -8) = local_9c;\n  *(undefined4 *)((int)ppppiVar16 + -0xc) = param_12;\n  *(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c;\n  *(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343;\n  local_6c = ppiVar10;\n  FUN_0021ef70();\n  *(int ***)((int)ppppiVar16 + -0x14) = local_94;\n  *(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e;\n  FUN_0021a270();\n  return 1;\n}" type_identifier (function_declarator "FUN_00220f60(int param_1,int *param_2,undefined4 param_3,int param_4,uint param_5,int param_6,\n            uint param_7,int param_8,byte *param_9,byte *param_10,undefined4 param_11,\n            undefined4 param_12,undefined4 *param_13)" identifier (parameter_list "(int param_1,int *param_2,undefined4 param_3,int param_4,uint param_5,int param_6,\n            uint param_7,int param_8,byte *param_9,byte *param_10,undefined4 param_11,\n            undefined4 param_12,undefined4 *param_13)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "uint param_7" type_identifier identifier) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "byte *param_9" type_identifier (pointer_declarator "*param_9" * identifier)) , (parameter_declaration "byte *param_10" type_identifier (pointer_declarator "*param_10" * identifier)) , (parameter_declaration "undefined4 param_11" type_identifier identifier) , (parameter_declaration "undefined4 param_12" type_identifier identifier) , (parameter_declaration "undefined4 *param_13" type_identifier (pointer_declarator "*param_13" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  byte bVar3;\n  char cVar4;\n  void *pvVar5;\n  byte *pbVar6;\n  int iVar7;\n  int ***pppiVar8;\n  uint uVar9;\n  int **ppiVar10;\n  byte bVar11;\n  uint uVar12;\n  byte *pbVar13;\n  int iVar14;\n  int extraout_EDX;\n  int *piVar15;\n  int ****ppppiVar16;\n  byte *pbVar17;\n  int ***pppiVar18;\n  byte bVar19;\n  longlong lVar20;\n  int ***pppiStack_b0;\n  undefined1 auStack_ac [4];\n  int local_a8;\n  int ***local_a4;\n  int local_a0;\n  int ***local_9c;\n  char local_95;\n  int **local_94;\n  undefined **local_90;\n  undefined1 local_8c [12];\n  int local_80 [4];\n  int **local_70;\n  int **local_6c;\n  int *local_68;\n  undefined4 local_64;\n  int local_60;\n  undefined1 local_5c;\n  undefined1 *local_58 [2];\n  undefined1 local_50 [16];\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar19 = 0;\n  local_90 = &__DT_PLTGOT;\n  if (param_10 == param_9 || (int)param_10 - (int)param_9 < 0) {\n    return 0;\n  }\n  if ((*param_9 & 0xfd) != 1) {\n    return 0;\n  }\n  pbVar17 = param_9 + 1;\n  local_94._0_1_ = *param_9;\n  pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17);\n  if (pvVar5 == (void *)0x0) {\n    return 0;\n  }\n  pbVar13 = (byte *)((int)pvVar5 + 1);\n  local_95 = '\x01';\n  if ((param_9[1] == 0x65) && (param_9[2] == 0x68)) {\n    if (param_9[3] != 0) {\n      return 0;\n    }\n    if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }\n    pbVar13 = (byte *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    pbVar17 = param_9 + 3;\n  }\n  if (param_10 <= pbVar13) {\n    return 0;\n  }\n  while ((char)*pbVar13 < '\0') {\n    pbVar13 = pbVar13 + 1;\n    if (param_10 == pbVar13) {\n      return 0;\n    }\n  }\n  pbVar6 = pbVar13 + 1;\n  if (param_10 <= pbVar6) {\n    return 0;\n  }\n  bVar11 = pbVar13[1];\n  while ((char)bVar11 < '\0') {\n    pbVar6 = pbVar6 + 1;\n    if (param_10 == pbVar6) {\n      return 0;\n    }\n    bVar11 = *pbVar6;\n  }\n  pbVar13 = pbVar6 + 1;\n  if ((byte)local_94 == 1) {\n    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }\n    pbVar13 = pbVar6 + 2;\n  }\n  else {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }\n  local_94._0_1_ = *pbVar17;\n  if ((byte)local_94 == 0x7a) {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }\n    local_94._0_1_ = pbVar17[1];\n    pbVar13 = pbVar13 + 1;\n    if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);\n  }\n  else {\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    /* WARNING: Subroutine does not return */\n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }\n  pppiVar18 = (int ***)(param_10 + -param_8);\n  local_9c = pppiVar8;\n  iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f);\n  if (0 < iVar7) {\n    return 0;\n  }\n  local_5c = (byte)local_94;\n  pbVar17 = (byte *)0xffffffff;\n  local_a4 = (int ***)(param_9 + -8);\n  iVar7 = (int)local_a4 - param_8;\n  local_68 = param_2;\n  local_64 = param_3;\n  local_94 = (int **)local_50;\n  pppiVar8 = local_9c;\n  if (local_9c != (int ***)0x0) {\n    do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);\n    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));\n  }\n  pppiStack_b0 = (int ***)0x0;\n  local_60 = iVar7;\n  local_58[0] = (undefined1 *)local_94;\n  FUN_000a8880(local_58,local_9c,pbVar17);\n  local_34[0] = local_2c;\n  local_40 = 0;\n  pppiStack_b0 = (int ***)0x0;\n  local_3c = 0;\n  local_38 = 0;\n                    /* try { // try from 002212a1 to 002212a5 has its CatchHandler @ 00221595 */\n  FUN_000a8880(local_34,param_9,param_10);\n  local_94 = &local_68;\n  ppppiVar16 = (int ****)auStack_ac;\n  iVar2 = local_a8;\n  if (local_95 != '\0') {\n    local_9c = &local_70;\n    pppiStack_b0 = pppiVar18;\n    local_70 = local_94;\n    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);\n    iVar14 = param_1 + 0x34;\n    if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }\n  }\n  local_a8 = iVar2;\n  ppppiVar16[-4] = (int ***)0x4c;\n  ppppiVar16[-5] = (int ***)0x2214cd;\n  ppiVar10 = (int **)FUN_00246670();\n  ppppiVar16[-3] = (int ***)local_94;\n  ppppiVar16[-4] = (int ***)ppiVar10;\n                    /* try { // try from 002214d8 to 002214dc has its CatchHandler @ 00221591 */\n  ppppiVar16[-5] = (int ***)0x2214dd;\n  FUN_0021dba0();\n  local_6c = (int **)CONCAT31(local_6c._1_3_,local_95);\n  local_9c = &local_70;\n  ppppiVar16[-3] = local_9c;\n  ppppiVar16[-4] = (int ***)param_13;\n                    /* try { // try from 002214f9 to 002214fd has its CatchHandler @ 0022158d */\n  ppppiVar16[-5] = (int ***)0x2214fe;\n  local_70 = ppiVar10;\n  FUN_0021fa00();\nLAB_0022131f:\n  local_70 = (int **)(param_9 + -param_8);\n  *(int ****)((int)ppppiVar16 + -8) = local_9c;\n  *(undefined4 *)((int)ppppiVar16 + -0xc) = param_12;\n  *(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c;\n  *(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343;\n  local_6c = ppiVar10;\n  FUN_0021ef70();\n  *(int ***)((int)ppppiVar16 + -0x14) = local_94;\n  *(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e;\n  FUN_0021a270();\n  return 1;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "void *pvVar5;" primitive_type (pointer_declarator "*pvVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int ***pppiVar8;" primitive_type (pointer_declarator "***pppiVar8" * (pointer_declarator "**pppiVar8" * (pointer_declarator "*pppiVar8" * identifier))) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int **ppiVar10;" primitive_type (pointer_declarator "**ppiVar10" * (pointer_declarator "*ppiVar10" * identifier)) ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int ****ppppiVar16;" primitive_type (pointer_declarator "****ppppiVar16" * (pointer_declarator "***ppppiVar16" * (pointer_declarator "**ppppiVar16" * (pointer_declarator "*ppppiVar16" * identifier)))) ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "int ***pppiVar18;" primitive_type (pointer_declarator "***pppiVar18" * (pointer_declarator "**pppiVar18" * (pointer_declarator "*pppiVar18" * identifier))) ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "longlong lVar20;" type_identifier identifier ;) (declaration "int ***pppiStack_b0;" primitive_type (pointer_declarator "***pppiStack_b0" * (pointer_declarator "**pppiStack_b0" * (pointer_declarator "*pppiStack_b0" * identifier))) ;) (declaration "undefined1 auStack_ac [4];" type_identifier (array_declarator "auStack_ac [4]" identifier [ number_literal ]) ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "int ***local_a4;" primitive_type (pointer_declarator "***local_a4" * (pointer_declarator "**local_a4" * (pointer_declarator "*local_a4" * identifier))) ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "int ***local_9c;" primitive_type (pointer_declarator "***local_9c" * (pointer_declarator "**local_9c" * (pointer_declarator "*local_9c" * identifier))) ;) (declaration "char local_95;" primitive_type identifier ;) (declaration "int **local_94;" primitive_type (pointer_declarator "**local_94" * (pointer_declarator "*local_94" * identifier)) ;) (declaration "undefined **local_90;" type_identifier (pointer_declarator "**local_90" * (pointer_declarator "*local_90" * identifier)) ;) (declaration "undefined1 local_8c [12];" type_identifier (array_declarator "local_8c [12]" identifier [ number_literal ]) ;) (declaration "int local_80 [4];" primitive_type (array_declarator "local_80 [4]" identifier [ number_literal ]) ;) (declaration "int **local_70;" primitive_type (pointer_declarator "**local_70" * (pointer_declarator "*local_70" * identifier)) ;) (declaration "int **local_6c;" primitive_type (pointer_declarator "**local_6c" * (pointer_declarator "*local_6c" * identifier)) ;) (declaration "int *local_68;" primitive_type (pointer_declarator "*local_68" * identifier) ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "undefined1 local_5c;" type_identifier identifier ;) (declaration "undefined1 *local_58 [2];" type_identifier (pointer_declarator "*local_58 [2]" * (array_declarator "local_58 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_50 [16];" type_identifier (array_declarator "local_50 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined1 *local_34 [2];" type_identifier (pointer_declarator "*local_34 [2]" * (array_declarator "local_34 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "local_90 = &__DT_PLTGOT;" (assignment_expression "local_90 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (if_statement "if (param_10 == param_9 || (int)param_10 - (int)param_9 < 0) {\n    return 0;\n  }" if (parenthesized_expression "(param_10 == param_9 || (int)param_10 - (int)param_9 < 0)" ( (binary_expression "param_10 == param_9 || (int)param_10 - (int)param_9 < 0" (binary_expression "param_10 == param_9" identifier == identifier) || (binary_expression "(int)param_10 - (int)param_9 < 0" (binary_expression "(int)param_10 - (int)param_9" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_9" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((*param_9 & 0xfd) != 1) {\n    return 0;\n  }" if (parenthesized_expression "((*param_9 & 0xfd) != 1)" ( (binary_expression "(*param_9 & 0xfd) != 1" (parenthesized_expression "(*param_9 & 0xfd)" ( (binary_expression "*param_9 & 0xfd" (pointer_expression "*param_9" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar17 = param_9 + 1;" (assignment_expression "pbVar17 = param_9 + 1" identifier = (binary_expression "param_9 + 1" identifier + number_literal)) ;) (expression_statement "local_94._0_1_ = *param_9;" (assignment_expression "local_94._0_1_ = *param_9" (field_expression "local_94._0_1_" identifier . field_identifier) = (pointer_expression "*param_9" * identifier)) ;) (expression_statement "pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17);" (assignment_expression "pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17)" identifier = (call_expression "memchr(pbVar17,0,(int)param_10 - (int)pbVar17)" identifier (argument_list "(pbVar17,0,(int)param_10 - (int)pbVar17)" ( identifier , number_literal , (binary_expression "(int)param_10 - (int)pbVar17" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (pvVar5 == (void *)0x0) {\n    return 0;\n  }" if (parenthesized_expression "(pvVar5 == (void *)0x0)" ( (binary_expression "pvVar5 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar13 = (byte *)((int)pvVar5 + 1);" (assignment_expression "pbVar13 = (byte *)((int)pvVar5 + 1)" identifier = (cast_expression "(byte *)((int)pvVar5 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar5 + 1)" ( (binary_expression "(int)pvVar5 + 1" (cast_expression "(int)pvVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_95 = '\x01';" (assignment_expression "local_95 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if ((param_9[1] == 0x65) && (param_9[2] == 0x68)) {\n    if (param_9[3] != 0) {\n      return 0;\n    }\n    if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }\n    pbVar13 = (byte *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    pbVar17 = param_9 + 3;\n  }" if (parenthesized_expression "((param_9[1] == 0x65) && (param_9[2] == 0x68))" ( (binary_expression "(param_9[1] == 0x65) && (param_9[2] == 0x68)" (parenthesized_expression "(param_9[1] == 0x65)" ( (binary_expression "param_9[1] == 0x65" (subscript_expression "param_9[1]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(param_9[2] == 0x68)" ( (binary_expression "param_9[2] == 0x68" (subscript_expression "param_9[2]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    if (param_9[3] != 0) {\n      return 0;\n    }\n    if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }\n    pbVar13 = (byte *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    pbVar17 = param_9 + 3;\n  }" { (if_statement "if (param_9[3] != 0) {\n      return 0;\n    }" if (parenthesized_expression "(param_9[3] != 0)" ( (binary_expression "param_9[3] != 0" (subscript_expression "param_9[3]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }" if (parenthesized_expression "((int)param_10 - (int)pbVar13 < 8)" ( (binary_expression "(int)param_10 - (int)pbVar13 < 8" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar13 = (byte *)((int)pvVar5 + 9);" (assignment_expression "pbVar13 = (byte *)((int)pvVar5 + 9)" identifier = (cast_expression "(byte *)((int)pvVar5 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar5 + 9)" ( (binary_expression "(int)pvVar5 + 9" (cast_expression "(int)pvVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_95 = '\0';" (assignment_expression "local_95 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pbVar17 = param_9 + 3;" (assignment_expression "pbVar17 = param_9 + 3" identifier = (binary_expression "param_9 + 3" identifier + number_literal)) ;) })) (if_statement "if (param_10 <= pbVar13) {\n    return 0;\n  }" if (parenthesized_expression "(param_10 <= pbVar13)" ( (binary_expression "param_10 <= pbVar13" identifier <= identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (while_statement "while ((char)*pbVar13 < '\0') {\n    pbVar13 = pbVar13 + 1;\n    if (param_10 == pbVar13) {\n      return 0;\n    }\n  }" while (parenthesized_expression "((char)*pbVar13 < '\0')" ( (binary_expression "(char)*pbVar13 < '\0'" (cast_expression "(char)*pbVar13" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar13" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pbVar13 = pbVar13 + 1;\n    if (param_10 == pbVar13) {\n      return 0;\n    }\n  }" { (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if (param_10 == pbVar13) {\n      return 0;\n    }" if (parenthesized_expression "(param_10 == pbVar13)" ( (binary_expression "param_10 == pbVar13" identifier == identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "pbVar6 = pbVar13 + 1;" (assignment_expression "pbVar6 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if (param_10 <= pbVar6) {\n    return 0;\n  }" if (parenthesized_expression "(param_10 <= pbVar6)" ( (binary_expression "param_10 <= pbVar6" identifier <= identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar11 = pbVar13[1];" (assignment_expression "bVar11 = pbVar13[1]" identifier = (subscript_expression "pbVar13[1]" identifier [ number_literal ])) ;) (while_statement "while ((char)bVar11 < '\0') {\n    pbVar6 = pbVar6 + 1;\n    if (param_10 == pbVar6) {\n      return 0;\n    }\n    bVar11 = *pbVar6;\n  }" while (parenthesized_expression "((char)bVar11 < '\0')" ( (binary_expression "(char)bVar11 < '\0'" (cast_expression "(char)bVar11" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pbVar6 = pbVar6 + 1;\n    if (param_10 == pbVar6) {\n      return 0;\n    }\n    bVar11 = *pbVar6;\n  }" { (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if (param_10 == pbVar6) {\n      return 0;\n    }" if (parenthesized_expression "(param_10 == pbVar6)" ( (binary_expression "param_10 == pbVar6" identifier == identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar11 = *pbVar6;" (assignment_expression "bVar11 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) })) (expression_statement "pbVar13 = pbVar6 + 1;" (assignment_expression "pbVar13 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if ((byte)local_94 == 1) {\n    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }\n    pbVar13 = pbVar6 + 2;\n  }\n  else {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }" if (parenthesized_expression "((byte)local_94 == 1)" ( (binary_expression "(byte)local_94 == 1" (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier) == number_literal) )) (compound_statement "{\n    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }\n    pbVar13 = pbVar6 + 2;\n  }" { (if_statement "if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }" if (parenthesized_expression "(param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0)" ( (binary_expression "param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0" (binary_expression "param_10 == pbVar13" identifier == identifier) || (binary_expression "(int)param_10 - (int)pbVar13 < 0" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar13 = pbVar6 + 2;" (assignment_expression "pbVar13 = pbVar6 + 2" identifier = (binary_expression "pbVar6 + 2" identifier + number_literal)) ;) }) (else_clause "else {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }" else (compound_statement "{\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }" { (if_statement "if (param_10 <= pbVar13) {\n      return 0;\n    }" if (parenthesized_expression "(param_10 <= pbVar13)" ( (binary_expression "param_10 <= pbVar13" identifier <= identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar11 = pbVar6[1];" (assignment_expression "bVar11 = pbVar6[1]" identifier = (subscript_expression "pbVar6[1]" identifier [ number_literal ])) ;) (while_statement "while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }" while (parenthesized_expression "((char)bVar11 < '\0')" ( (binary_expression "(char)bVar11 < '\0'" (cast_expression "(char)bVar11" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }" { (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if (param_10 == pbVar13) {\n        return 0;\n      }" if (parenthesized_expression "(param_10 == pbVar13)" ( (binary_expression "param_10 == pbVar13" identifier == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar11 = *pbVar13;" (assignment_expression "bVar11 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) })) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }))) (expression_statement "local_94._0_1_ = *pbVar17;" (assignment_expression "local_94._0_1_ = *pbVar17" (field_expression "local_94._0_1_" identifier . field_identifier) = (pointer_expression "*pbVar17" * identifier)) ;) (if_statement "if ((byte)local_94 == 0x7a) {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }\n    local_94._0_1_ = pbVar17[1];\n    pbVar13 = pbVar13 + 1;\n    if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);\n  }\n  else {\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    /* WARNING: Subroutine does not return */\n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }" if (parenthesized_expression "((byte)local_94 == 0x7a)" ( (binary_expression "(byte)local_94 == 0x7a" (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier) == number_literal) )) (compound_statement "{\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }\n    local_94._0_1_ = pbVar17[1];\n    pbVar13 = pbVar13 + 1;\n    if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);\n  }" { (if_statement "if (param_10 <= pbVar13) {\n      return 0;\n    }" if (parenthesized_expression "(param_10 <= pbVar13)" ( (binary_expression "param_10 <= pbVar13" identifier <= identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (while_statement "while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }" while (parenthesized_expression "((char)*pbVar13 < '\0')" ( (binary_expression "(char)*pbVar13 < '\0'" (cast_expression "(char)*pbVar13" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar13" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }" { (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if (param_10 == pbVar13) {\n        return 0;\n      }" if (parenthesized_expression "(param_10 == pbVar13)" ( (binary_expression "param_10 == pbVar13" identifier == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "local_94._0_1_ = pbVar17[1];" (assignment_expression "local_94._0_1_ = pbVar17[1]" (field_expression "local_94._0_1_" identifier . field_identifier) = (subscript_expression "pbVar17[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }" if (parenthesized_expression "((byte)local_94 != 0)" ( (binary_expression "(byte)local_94 != 0" (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier) != number_literal) )) (compound_statement "{\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }" { (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;) (expression_statement "bVar11 = (byte)local_94;" (assignment_expression "bVar11 = (byte)local_94" identifier = (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_002210a7;" goto statement_identifier ;) })) (labeled_statement "LAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);" statement_identifier : (expression_statement "pppiVar8 = (int ***)((int)local_90 + -0x102e4a);" (assignment_expression "pppiVar8 = (int ***)((int)local_90 + -0x102e4a)" identifier = (cast_expression "(int ***)((int)local_90 + -0x102e4a)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)local_90 + -0x102e4a)" ( (binary_expression "(int)local_90 + -0x102e4a" (cast_expression "(int)local_90" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) }) (else_clause "else {\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    /* WARNING: Subroutine does not return */\n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }" else (compound_statement "{\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    /* WARNING: Subroutine does not return */\n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }" { (expression_statement "bVar11 = (byte)local_94;" (assignment_expression "bVar11 = (byte)local_94" identifier = (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if ((byte)local_94 == 0) goto LAB_002214ac;" if (parenthesized_expression "((byte)local_94 == 0)" ( (binary_expression "(byte)local_94 == 0" (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier) == number_literal) )) (goto_statement "goto LAB_002214ac;" goto statement_identifier ;)) (labeled_statement "LAB_002210a7:\n    local_9c = (int ***)0xffffffff;" statement_identifier : (expression_statement "local_9c = (int ***)0xffffffff;" (assignment_expression "local_9c = (int ***)0xffffffff" identifier = (cast_expression "(int ***)0xffffffff" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) ;)) (expression_statement "local_94._0_1_ = 0;" (assignment_expression "local_94._0_1_ = 0" (field_expression "local_94._0_1_" identifier . field_identifier) = number_literal) ;) (do_statement "do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);" do (compound_statement "{\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    }" { (if_statement "if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }" if (parenthesized_expression "(bVar11 == 0x50)" ( (binary_expression "bVar11 == 0x50" identifier == number_literal) )) (compound_statement "{\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }" { (if_statement "if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }" if (parenthesized_expression "(param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0)" ( (binary_expression "param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0" (binary_expression "param_10 == pbVar13" identifier == identifier) || (binary_expression "(int)param_10 - (int)pbVar13 < 0" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal)) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar11 = *pbVar13;" (assignment_expression "bVar11 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }" if (parenthesized_expression "((bVar11 & 0x60) == 0x60)" ( (binary_expression "(bVar11 & 0x60) == 0x60" (parenthesized_expression "(bVar11 & 0x60)" ( (binary_expression "bVar11 & 0x60" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar3 = bVar11 & 7;" (assignment_expression "bVar3 = bVar11 & 7" identifier = (binary_expression "bVar11 & 7" identifier & number_literal)) ;) (if_statement "if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }" if (parenthesized_expression "(bVar3 == 2)" ( (binary_expression "bVar3 == 2" identifier == number_literal) )) (compound_statement "{\n          uVar9 = 2;\n        }" { (expression_statement "uVar9 = 2;" (assignment_expression "uVar9 = 2" identifier = number_literal) ;) }) (else_clause "else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }" else (compound_statement "{\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }" { (if_statement "if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }" if (parenthesized_expression "(bVar3 < 3)" ( (binary_expression "bVar3 < 3" identifier < number_literal) )) (compound_statement "{\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }" { (if_statement "if (bVar3 != 0) {\n              return 0;\n            }" if (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }" else (compound_statement "{\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }" { (if_statement "if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }" if (parenthesized_expression "(bVar3 == 3)" ( (binary_expression "bVar3 == 3" identifier == number_literal) )) (compound_statement "{\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }" { (expression_statement "uVar9 = 4;" (assignment_expression "uVar9 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_002213bf;" goto statement_identifier ;) })) (if_statement "if (bVar3 != 4) {\n              return 0;\n            }" if (parenthesized_expression "(bVar3 != 4)" ( (binary_expression "bVar3 != 4" identifier != number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "uVar9 = 8;" (assignment_expression "uVar9 = 8" identifier = number_literal) ;) }))) (labeled_statement "LAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;" statement_identifier : (expression_statement "uVar12 = (int)param_10 - (int)pbVar13;" (assignment_expression "uVar12 = (int)param_10 - (int)pbVar13" identifier = (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) (if_statement "if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }" if (parenthesized_expression "((bVar11 & 0xf0) == 0x50)" ( (binary_expression "(bVar11 & 0xf0) == 0x50" (parenthesized_expression "(bVar11 & 0xf0)" ( (binary_expression "bVar11 & 0xf0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }" { (if_statement "if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }" if (parenthesized_expression "(uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))))" ( (binary_expression "uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" identifier < (parenthesized_expression "(-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" ( (binary_expression "-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))" (unary_expression "-uVar9" - identifier) & (call_expression "(uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar13 + ((uVar9 - 1) - (int)param_9))" ( (binary_expression "pbVar13 + ((uVar9 - 1) - (int)param_9)" identifier + (parenthesized_expression "((uVar9 - 1) - (int)param_9)" ( (binary_expression "(uVar9 - 1) - (int)param_9" (parenthesized_expression "(uVar9 - 1)" ( (binary_expression "uVar9 - 1" identifier - number_literal) )) - (cast_expression "(int)param_9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));" (assignment_expression "pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" identifier = (binary_expression "pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" identifier + (parenthesized_expression "(-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" ( (binary_expression "-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))" (unary_expression "-uVar9" - identifier) & (call_expression "(uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar13 + ((uVar9 - 1) - (int)param_9))" ( (binary_expression "pbVar13 + ((uVar9 - 1) - (int)param_9)" identifier + (parenthesized_expression "((uVar9 - 1) - (int)param_9)" ( (binary_expression "(uVar9 - 1) - (int)param_9" (parenthesized_expression "(uVar9 - 1)" ( (binary_expression "uVar9 - 1" identifier - number_literal) )) - (cast_expression "(int)param_9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) )))) ;) (expression_statement "uVar12 = (int)param_10 - (int)pbVar13;" (assignment_expression "uVar12 = (int)param_10 - (int)pbVar13" identifier = (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "local_9c = (int ***)((int)pbVar13 - param_8);" (assignment_expression "local_9c = (int ***)((int)pbVar13 - param_8)" identifier = (cast_expression "(int ***)((int)pbVar13 - param_8)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pbVar13 - param_8)" ( (binary_expression "(int)pbVar13 - param_8" (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (if_statement "if (uVar12 < uVar9) {\n          return 0;\n        }" if (parenthesized_expression "(uVar12 < uVar9)" ( (binary_expression "uVar12 < uVar9" identifier < identifier) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar13 = pbVar13 + uVar9;" (assignment_expression "pbVar13 = pbVar13 + uVar9" identifier = (binary_expression "pbVar13 + uVar9" identifier + identifier)) ;) }) (else_clause "else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }" else (compound_statement "{\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }" { (if_statement "if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }" if (parenthesized_expression "(bVar11 < 0x51)" ( (binary_expression "bVar11 < 0x51" identifier < number_literal) )) (compound_statement "{\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }" { (if_statement "if (bVar11 != 0x4c) {\n            return 0;\n          }" if (parenthesized_expression "(bVar11 != 0x4c)" ( (binary_expression "bVar11 != 0x4c" identifier != number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }" if (parenthesized_expression "((int)param_10 - (int)pbVar13 < 1)" ( (binary_expression "(int)param_10 - (int)pbVar13 < 1" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }" else (compound_statement "{\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }" { (if_statement "if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }" if (parenthesized_expression "(bVar11 != 0x52)" ( (binary_expression "bVar11 != 0x52" identifier != number_literal) )) (compound_statement "{\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }" { (if_statement "if (bVar11 != 0x53) {\n              return 0;\n            }" if (parenthesized_expression "(bVar11 != 0x53)" ( (binary_expression "bVar11 != 0x53" identifier != number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_002210d9;" goto statement_identifier ;) })) (if_statement "if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }" if (parenthesized_expression "(param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0)" ( (binary_expression "param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0" (binary_expression "param_10 == pbVar13" identifier == identifier) || (binary_expression "(int)param_10 - (int)pbVar13 < 0" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal)) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "local_94._0_1_ = *pbVar13;" (assignment_expression "local_94._0_1_ = *pbVar13" (field_expression "local_94._0_1_" identifier . field_identifier) = (pointer_expression "*pbVar13" * identifier)) ;) (if_statement "if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }" if (parenthesized_expression "(4 < ((byte)local_94 & 7))" ( (binary_expression "4 < ((byte)local_94 & 7)" number_literal < (parenthesized_expression "((byte)local_94 & 7)" ( (binary_expression "(byte)local_94 & 7" (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }" if (parenthesized_expression "((1 << ((byte)local_94 & 7) & 0x1dU) == 0)" ( (binary_expression "(1 << ((byte)local_94 & 7) & 0x1dU) == 0" (parenthesized_expression "(1 << ((byte)local_94 & 7) & 0x1dU)" ( (binary_expression "1 << ((byte)local_94 & 7) & 0x1dU" (binary_expression "1 << ((byte)local_94 & 7)" number_literal << (parenthesized_expression "((byte)local_94 & 7)" ( (binary_expression "(byte)local_94 & 7" (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }))) (labeled_statement "LAB_002210d9:\n      pbVar17 = pbVar17 + 1;" statement_identifier : (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;)) (expression_statement "bVar11 = *pbVar17;" (assignment_expression "bVar11 = *pbVar17" identifier = (pointer_expression "*pbVar17" * identifier)) ;) }) while (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) ;) (if_statement "if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;" if (parenthesized_expression "(local_9c == (int ***)0xffffffff)" ( (binary_expression "local_9c == (int ***)0xffffffff" identifier == (cast_expression "(int ***)0xffffffff" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) )) (goto_statement "goto LAB_002214ac;" goto statement_identifier ;)) (expression_statement "local_a0 = (int)local_9c >> 0x1f;" (assignment_expression "local_a0 = (int)local_9c >> 0x1f" identifier = (binary_expression "(int)local_9c >> 0x1f" (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "local_a4 = local_9c;" (assignment_expression "local_a4 = local_9c" identifier = identifier) ;) (expression_statement "iVar7 = FUN_001b4510(param_11,local_9c,local_a0);" (assignment_expression "iVar7 = FUN_001b4510(param_11,local_9c,local_a0)" identifier = (call_expression "FUN_001b4510(param_11,local_9c,local_a0)" identifier (argument_list "(param_11,local_9c,local_a0)" ( identifier , identifier , identifier )))) ;) (if_statement "if (0 < iVar7) {\n      return 0;\n    }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "lVar20 = FUN_001b4420(param_11);" (assignment_expression "lVar20 = FUN_001b4420(param_11)" identifier = (call_expression "FUN_001b4420(param_11)" identifier (argument_list "(param_11)" ( identifier )))) ;) (if_statement "if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }" if (parenthesized_expression "(lVar20 != CONCAT44(local_a0,local_9c))" ( (binary_expression "lVar20 != CONCAT44(local_a0,local_9c)" identifier != (call_expression "CONCAT44(local_a0,local_9c)" identifier (argument_list "(local_a0,local_9c)" ( identifier , identifier )))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pppiStack_b0 = (int ***)FUN_001b4450(param_11);" (assignment_expression "pppiStack_b0 = (int ***)FUN_001b4450(param_11)" identifier = (cast_expression "(int ***)FUN_001b4450(param_11)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (call_expression "FUN_001b4450(param_11)" identifier (argument_list "(param_11)" ( identifier ))))) ;) (if_statement "if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }" if (parenthesized_expression "(pppiStack_b0 == (int ***)0xffffffff)" ( (binary_expression "pppiStack_b0 == (int ***)0xffffffff" identifier == (cast_expression "(int ***)0xffffffff" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);" (assignment_expression "pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2)" identifier = (cast_expression "(int ***)(**(code **)(*param_2 + 0x8c))(param_2)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (call_expression "(**(code **)(*param_2 + 0x8c))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x8c))" ( (pointer_expression "**(code **)(*param_2 + 0x8c)" * (pointer_expression "*(code **)(*param_2 + 0x8c)" * (cast_expression "(code **)(*param_2 + 0x8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x8c)" ( (binary_expression "*param_2 + 0x8c" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))))) ;) (if_statement "if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }" if (parenthesized_expression "(pppiStack_b0 < pppiVar8)" ( (binary_expression "pppiStack_b0 < pppiVar8" identifier < identifier) )) (compound_statement "{\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }" { (expression_statement "local_95 = '\0';" (assignment_expression "local_95 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_a4 = (int ***)((int)local_90 + -0x102e4a);" (assignment_expression "local_a4 = (int ***)((int)local_90 + -0x102e4a)" identifier = (cast_expression "(int ***)((int)local_90 + -0x102e4a)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)local_90 + -0x102e4a)" ( (binary_expression "(int)local_90 + -0x102e4a" (cast_expression "(int)local_90" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }" else (compound_statement "{\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }" { (if_statement "if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }" if (parenthesized_expression "((int ***)(param_5 / 0x18) <= pppiStack_b0)" ( (binary_expression "(int ***)(param_5 / 0x18) <= pppiStack_b0" (cast_expression "(int ***)(param_5 / 0x18)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_5 / 0x18)" ( (binary_expression "param_5 / 0x18" identifier / number_literal) ))) <= identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);" (assignment_expression "pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18)" identifier = (cast_expression "(int ***)((int)pppiStack_b0 * 0x18)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppiStack_b0 * 0x18)" ( (binary_expression "(int)pppiStack_b0 * 0x18" (cast_expression "(int)pppiStack_b0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (if_statement "if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }" if (parenthesized_expression "(param_7 <= *(uint *)((int)pppiStack_b0 + param_4))" ( (binary_expression "param_7 <= *(uint *)((int)pppiStack_b0 + param_4)" identifier <= (pointer_expression "*(uint *)((int)pppiStack_b0 + param_4)" * (cast_expression "(uint *)((int)pppiStack_b0 + param_4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppiStack_b0 + param_4)" ( (binary_expression "(int)pppiStack_b0 + param_4" (cast_expression "(int)pppiStack_b0" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);" (assignment_expression "local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6)" identifier = (cast_expression "(int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(*(uint *)((int)pppiStack_b0 + param_4) + param_6)" ( (binary_expression "*(uint *)((int)pppiStack_b0 + param_4) + param_6" (pointer_expression "*(uint *)((int)pppiStack_b0 + param_4)" * (cast_expression "(uint *)((int)pppiStack_b0 + param_4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppiStack_b0 + param_4)" ( (binary_expression "(int)pppiStack_b0 + param_4" (cast_expression "(int)pppiStack_b0" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) + identifier) )))) ;) }))) (expression_statement "iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);" (assignment_expression "iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f)" identifier = (call_expression "FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f)" identifier (argument_list "(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f)" ( identifier , (binary_expression "(int)local_9c + 1" (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , (binary_expression "(int)local_9c + 1 >> 0x1f" (binary_expression "(int)local_9c + 1" (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) >> number_literal) )))) ;) (expression_statement "pppiVar8 = local_a4;" (assignment_expression "pppiVar8 = local_a4" identifier = identifier) ;) (if_statement "if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    /* WARNING: Subroutine does not return */\n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }" if (parenthesized_expression "(iVar7 != 1)" ( (binary_expression "iVar7 != 1" identifier != number_literal) )) (compound_statement "{\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    /* WARNING: Subroutine does not return */\n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }" { (expression_statement "pppiStack_b0 = (int ***)(uint)(byte)local_94;" (assignment_expression "pppiStack_b0 = (int ***)(uint)(byte)local_94" identifier = (cast_expression "(int ***)(uint)(byte)local_94" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (cast_expression "(uint)(byte)local_94" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier)))) ;) comment (expression_statement "FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);" (call_expression "FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969)" identifier (argument_list "((int)local_90 + -0x102679,0x3af,local_90 + -0x40969)" ( (binary_expression "(int)local_90 + -0x102679" (cast_expression "(int)local_90" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal , (binary_expression "local_90 + -0x40969" identifier + number_literal) ))) ;) })) }))) (expression_statement "pppiVar18 = (int ***)(param_10 + -param_8);" (assignment_expression "pppiVar18 = (int ***)(param_10 + -param_8)" identifier = (cast_expression "(int ***)(param_10 + -param_8)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_10 + -param_8)" ( (binary_expression "param_10 + -param_8" identifier + (unary_expression "-param_8" - identifier)) )))) ;) (expression_statement "local_9c = pppiVar8;" (assignment_expression "local_9c = pppiVar8" identifier = identifier) ;) (expression_statement "iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f);" (assignment_expression "iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f)" identifier = (call_expression "FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f)" identifier (argument_list "(param_11,pppiVar18,(int)pppiVar18 >> 0x1f)" ( identifier , identifier , (binary_expression "(int)pppiVar18 >> 0x1f" (cast_expression "(int)pppiVar18" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (if_statement "if (0 < iVar7) {\n    return 0;\n  }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "local_5c = (byte)local_94;" (assignment_expression "local_5c = (byte)local_94" identifier = (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)0xffffffff;" (assignment_expression "pbVar17 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_a4 = (int ***)(param_9 + -8);" (assignment_expression "local_a4 = (int ***)(param_9 + -8)" identifier = (cast_expression "(int ***)(param_9 + -8)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_9 + -8)" ( (binary_expression "param_9 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar7 = (int)local_a4 - param_8;" (assignment_expression "iVar7 = (int)local_a4 - param_8" identifier = (binary_expression "(int)local_a4 - param_8" (cast_expression "(int)local_a4" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "local_68 = param_2;" (assignment_expression "local_68 = param_2" identifier = identifier) ;) (expression_statement "local_64 = param_3;" (assignment_expression "local_64 = param_3" identifier = identifier) ;) (expression_statement "local_94 = (int **)local_50;" (assignment_expression "local_94 = (int **)local_50" identifier = (cast_expression "(int **)local_50" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "pppiVar8 = local_9c;" (assignment_expression "pppiVar8 = local_9c" identifier = identifier) ;) (if_statement "if (local_9c != (int ***)0x0) {\n    do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);\n    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));\n  }" if (parenthesized_expression "(local_9c != (int ***)0x0)" ( (binary_expression "local_9c != (int ***)0x0" identifier != (cast_expression "(int ***)0x0" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) )) (compound_statement "{\n    do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);\n    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));\n  }" { (do_statement "do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);" do (compound_statement "{\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    }" { (expression_statement "pppiVar18 = pppiVar8;" (assignment_expression "pppiVar18 = pppiVar8" identifier = identifier) ;) (if_statement "if (pbVar17 == (byte *)0x0) break;" if (parenthesized_expression "(pbVar17 == (byte *)0x0)" ( (binary_expression "pbVar17 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pbVar17 = pbVar17 + -1;" (assignment_expression "pbVar17 = pbVar17 + -1" identifier = (binary_expression "pbVar17 + -1" identifier + number_literal)) ;) (expression_statement "pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);" (assignment_expression "pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1)" identifier = (cast_expression "(int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppiVar8 + (uint)bVar19 * -2 + 1)" ( (binary_expression "(int)pppiVar8 + (uint)bVar19 * -2 + 1" (binary_expression "(int)pppiVar8 + (uint)bVar19 * -2" (cast_expression "(int)pppiVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "bVar11 = *(byte *)pppiVar8;" (assignment_expression "bVar11 = *(byte *)pppiVar8" identifier = (pointer_expression "*(byte *)pppiVar8" * (cast_expression "(byte *)pppiVar8" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pppiVar8 = pppiVar18;" (assignment_expression "pppiVar8 = pppiVar18" identifier = identifier) ;) }) while (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) ;) (expression_statement "pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));" (assignment_expression "pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1))" identifier = (cast_expression "(byte *)((int)local_9c + (~(uint)pbVar17 - 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_9c + (~(uint)pbVar17 - 1))" ( (binary_expression "(int)local_9c + (~(uint)pbVar17 - 1)" (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(~(uint)pbVar17 - 1)" ( (binary_expression "~(uint)pbVar17 - 1" (unary_expression "~(uint)pbVar17" ~ (cast_expression "(uint)pbVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal) ))) )))) ;) })) (expression_statement "pppiStack_b0 = (int ***)0x0;" (assignment_expression "pppiStack_b0 = (int ***)0x0" identifier = (cast_expression "(int ***)0x0" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) ;) (expression_statement "local_60 = iVar7;" (assignment_expression "local_60 = iVar7" identifier = identifier) ;) (expression_statement "local_58[0] = (undefined1 *)local_94;" (assignment_expression "local_58[0] = (undefined1 *)local_94" (subscript_expression "local_58[0]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)local_94" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "FUN_000a8880(local_58,local_9c,pbVar17);" (call_expression "FUN_000a8880(local_58,local_9c,pbVar17)" identifier (argument_list "(local_58,local_9c,pbVar17)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_34[0] = local_2c;" (assignment_expression "local_34[0] = local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "pppiStack_b0 = (int ***)0x0;" (assignment_expression "pppiStack_b0 = (int ***)0x0" identifier = (cast_expression "(int ***)0x0" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) comment (expression_statement "FUN_000a8880(local_34,param_9,param_10);" (call_expression "FUN_000a8880(local_34,param_9,param_10)" identifier (argument_list "(local_34,param_9,param_10)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_94 = &local_68;" (assignment_expression "local_94 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (expression_statement "ppppiVar16 = (int ****)auStack_ac;" (assignment_expression "ppppiVar16 = (int ****)auStack_ac" identifier = (cast_expression "(int ****)auStack_ac" ( (type_descriptor "int ****" primitive_type (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))) ) identifier)) ;) (expression_statement "iVar2 = local_a8;" (assignment_expression "iVar2 = local_a8" identifier = identifier) ;) (if_statement "if (local_95 != '\0') {\n    local_9c = &local_70;\n    pppiStack_b0 = pppiVar18;\n    local_70 = local_94;\n    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);\n    iVar14 = param_1 + 0x34;\n    if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }\n  }" if (parenthesized_expression "(local_95 != '\0')" ( (binary_expression "local_95 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_9c = &local_70;\n    pppiStack_b0 = pppiVar18;\n    local_70 = local_94;\n    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);\n    iVar14 = param_1 + 0x34;\n    if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }\n  }" { (expression_statement "local_9c = &local_70;" (assignment_expression "local_9c = &local_70" identifier = (pointer_expression "&local_70" & identifier)) ;) (expression_statement "pppiStack_b0 = pppiVar18;" (assignment_expression "pppiStack_b0 = pppiVar18" identifier = identifier) ;) (expression_statement "local_70 = local_94;" (assignment_expression "local_70 = local_94" identifier = identifier) ;) (expression_statement "FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);" (call_expression "FUN_0021b4b0(local_80,param_1 + 0x30,local_9c)" identifier (argument_list "(local_80,param_1 + 0x30,local_9c)" ( identifier , (binary_expression "param_1 + 0x30" identifier + number_literal) , identifier ))) ;) (expression_statement "iVar14 = param_1 + 0x34;" (assignment_expression "iVar14 = param_1 + 0x34" identifier = (binary_expression "param_1 + 0x34" identifier + number_literal)) ;) (if_statement "if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }" if (parenthesized_expression "(local_80[0] == iVar14)" ( (binary_expression "local_80[0] == iVar14" (subscript_expression "local_80[0]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }" { (expression_statement "piVar1 = (int *)param_13[1];" (assignment_expression "piVar1 = (int *)param_13[1]" identifier = (cast_expression "(int *)param_13[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_13[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar2 = local_a8;" (assignment_expression "iVar2 = local_a8" identifier = identifier) ;) (for_statement "for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }" for ( (assignment_expression "piVar15 = (int *)*param_13" identifier = (cast_expression "(int *)*param_13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_13" * identifier))) ; (comma_expression "local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1" (assignment_expression "local_a8 = iVar7" identifier = identifier) , (comma_expression "ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1" (assignment_expression "ppppiVar16 = &pppiStack_b0" identifier = (pointer_expression "&pppiStack_b0" & identifier)) , (binary_expression "piVar15 != piVar1" identifier != identifier))) ; (assignment_expression "piVar15 = piVar15 + 2" identifier = (binary_expression "piVar15 + 2" identifier + number_literal)) ) (compound_statement "{\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }" { (expression_statement "ppiVar10 = (int **)*piVar15;" (assignment_expression "ppiVar10 = (int **)*piVar15" identifier = (cast_expression "(int **)*piVar15" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar15" * identifier))) ;) (expression_statement "cVar4 = FUN_0021a660(ppiVar10,local_94);" (assignment_expression "cVar4 = FUN_0021a660(ppiVar10,local_94)" identifier = (call_expression "FUN_0021a660(ppiVar10,local_94)" identifier (argument_list "(ppiVar10,local_94)" ( identifier , identifier )))) ;) (expression_statement "iVar14 = extraout_EDX;" (assignment_expression "iVar14 = extraout_EDX" identifier = identifier) ;) (expression_statement "iVar7 = local_a8;" (assignment_expression "iVar7 = local_a8" identifier = identifier) ;) (if_statement "if (cVar4 != '\0') goto LAB_002212f4;" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_002212f4;" goto statement_identifier ;)) (expression_statement "iVar2 = local_a8;" (assignment_expression "iVar2 = local_a8" identifier = identifier) ;) })) }) (else_clause "else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }" else (compound_statement "{\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }" { (expression_statement "ppiVar10 = *(int ***)(local_80[0] + 0x10);" (assignment_expression "ppiVar10 = *(int ***)(local_80[0] + 0x10)" identifier = (pointer_expression "*(int ***)(local_80[0] + 0x10)" * (cast_expression "(int ***)(local_80[0] + 0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(local_80[0] + 0x10)" ( (binary_expression "local_80[0] + 0x10" (subscript_expression "local_80[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (labeled_statement "LAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;" statement_identifier : (expression_statement "ppppiVar16 = &pppiStack_b0;" (assignment_expression "ppppiVar16 = &pppiStack_b0" identifier = (pointer_expression "&pppiStack_b0" & identifier)) ;)) (expression_statement "iVar2 = local_a8;" (assignment_expression "iVar2 = local_a8" identifier = identifier) ;) (if_statement "if (ppiVar10 != (int **)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }" if (parenthesized_expression "(ppiVar10 != (int **)0x0)" ( (binary_expression "ppiVar10 != (int **)0x0" identifier != (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }" { comment (expression_statement "FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);" (call_expression "FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14)" identifier (argument_list "(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14)" ( identifier , identifier , identifier , identifier , (binary_expression "(int)param_10 - (int)local_a4" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_a4" ( (type_descriptor "int" primitive_type) ) identifier)) , number_literal , identifier , identifier ))) ;) (expression_statement "ppppiVar16 = &pppiStack_b0;" (assignment_expression "ppppiVar16 = &pppiStack_b0" identifier = (pointer_expression "&pppiStack_b0" & identifier)) ;) (goto_statement "goto LAB_0022131f;" goto statement_identifier ;) })) }))) })) (expression_statement "local_a8 = iVar2;" (assignment_expression "local_a8 = iVar2" identifier = identifier) ;) (expression_statement "ppppiVar16[-4] = (int ***)0x4c;" (assignment_expression "ppppiVar16[-4] = (int ***)0x4c" (subscript_expression "ppppiVar16[-4]" identifier [ number_literal ]) = (cast_expression "(int ***)0x4c" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) ;) (expression_statement "ppppiVar16[-5] = (int ***)0x2214cd;" (assignment_expression "ppppiVar16[-5] = (int ***)0x2214cd" (subscript_expression "ppppiVar16[-5]" identifier [ number_literal ]) = (cast_expression "(int ***)0x2214cd" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) ;) (expression_statement "ppiVar10 = (int **)FUN_00246670();" (assignment_expression "ppiVar10 = (int **)FUN_00246670()" identifier = (cast_expression "(int **)FUN_00246670()" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "FUN_00246670()" identifier (argument_list "()" ( ))))) ;) (expression_statement "ppppiVar16[-3] = (int ***)local_94;" (assignment_expression "ppppiVar16[-3] = (int ***)local_94" (subscript_expression "ppppiVar16[-3]" identifier [ number_literal ]) = (cast_expression "(int ***)local_94" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (expression_statement "ppppiVar16[-4] = (int ***)ppiVar10;" (assignment_expression "ppppiVar16[-4] = (int ***)ppiVar10" (subscript_expression "ppppiVar16[-4]" identifier [ number_literal ]) = (cast_expression "(int ***)ppiVar10" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) comment (expression_statement "ppppiVar16[-5] = (int ***)0x2214dd;" (assignment_expression "ppppiVar16[-5] = (int ***)0x2214dd" (subscript_expression "ppppiVar16[-5]" identifier [ number_literal ]) = (cast_expression "(int ***)0x2214dd" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) ;) (expression_statement "FUN_0021dba0();" (call_expression "FUN_0021dba0()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_6c = (int **)CONCAT31(local_6c._1_3_,local_95);" (assignment_expression "local_6c = (int **)CONCAT31(local_6c._1_3_,local_95)" identifier = (cast_expression "(int **)CONCAT31(local_6c._1_3_,local_95)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "CONCAT31(local_6c._1_3_,local_95)" identifier (argument_list "(local_6c._1_3_,local_95)" ( (field_expression "local_6c._1_3_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_9c = &local_70;" (assignment_expression "local_9c = &local_70" identifier = (pointer_expression "&local_70" & identifier)) ;) (expression_statement "ppppiVar16[-3] = local_9c;" (assignment_expression "ppppiVar16[-3] = local_9c" (subscript_expression "ppppiVar16[-3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "ppppiVar16[-4] = (int ***)param_13;" (assignment_expression "ppppiVar16[-4] = (int ***)param_13" (subscript_expression "ppppiVar16[-4]" identifier [ number_literal ]) = (cast_expression "(int ***)param_13" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) comment (expression_statement "ppppiVar16[-5] = (int ***)0x2214fe;" (assignment_expression "ppppiVar16[-5] = (int ***)0x2214fe" (subscript_expression "ppppiVar16[-5]" identifier [ number_literal ]) = (cast_expression "(int ***)0x2214fe" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) ;) (expression_statement "local_70 = ppiVar10;" (assignment_expression "local_70 = ppiVar10" identifier = identifier) ;) (expression_statement "FUN_0021fa00();" (call_expression "FUN_0021fa00()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0022131f:\n  local_70 = (int **)(param_9 + -param_8);" statement_identifier : (expression_statement "local_70 = (int **)(param_9 + -param_8);" (assignment_expression "local_70 = (int **)(param_9 + -param_8)" identifier = (cast_expression "(int **)(param_9 + -param_8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_9 + -param_8)" ( (binary_expression "param_9 + -param_8" identifier + (unary_expression "-param_8" - identifier)) )))) ;)) (expression_statement "*(int ****)((int)ppppiVar16 + -8) = local_9c;" (assignment_expression "*(int ****)((int)ppppiVar16 + -8) = local_9c" (pointer_expression "*(int ****)((int)ppppiVar16 + -8)" * (cast_expression "(int ****)((int)ppppiVar16 + -8)" ( (type_descriptor "int ****" primitive_type (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))) ) (parenthesized_expression "((int)ppppiVar16 + -8)" ( (binary_expression "(int)ppppiVar16 + -8" (cast_expression "(int)ppppiVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppppiVar16 + -0xc) = param_12;" (assignment_expression "*(undefined4 *)((int)ppppiVar16 + -0xc) = param_12" (pointer_expression "*(undefined4 *)((int)ppppiVar16 + -0xc)" * (cast_expression "(undefined4 *)((int)ppppiVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppppiVar16 + -0xc)" ( (binary_expression "(int)ppppiVar16 + -0xc" (cast_expression "(int)ppppiVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c;" (assignment_expression "*(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c" (pointer_expression "*(undefined1 **)((int)ppppiVar16 + -0x10)" * (cast_expression "(undefined1 **)((int)ppppiVar16 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppppiVar16 + -0x10)" ( (binary_expression "(int)ppppiVar16 + -0x10" (cast_expression "(int)ppppiVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343;" (assignment_expression "*(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343" (pointer_expression "*(undefined4 *)((int)ppppiVar16 + -0x14)" * (cast_expression "(undefined4 *)((int)ppppiVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppppiVar16 + -0x14)" ( (binary_expression "(int)ppppiVar16 + -0x14" (cast_expression "(int)ppppiVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_6c = ppiVar10;" (assignment_expression "local_6c = ppiVar10" identifier = identifier) ;) (expression_statement "FUN_0021ef70();" (call_expression "FUN_0021ef70()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int ***)((int)ppppiVar16 + -0x14) = local_94;" (assignment_expression "*(int ***)((int)ppppiVar16 + -0x14) = local_94" (pointer_expression "*(int ***)((int)ppppiVar16 + -0x14)" * (cast_expression "(int ***)((int)ppppiVar16 + -0x14)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppppiVar16 + -0x14)" ( (binary_expression "(int)ppppiVar16 + -0x14" (cast_expression "(int)ppppiVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e;" (assignment_expression "*(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e" (pointer_expression "*(undefined4 *)((int)ppppiVar16 + -0x18)" * (cast_expression "(undefined4 *)((int)ppppiVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppppiVar16 + -0x18)" ( (binary_expression "(int)ppppiVar16 + -0x18" (cast_expression "(int)ppppiVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0021a270();" (call_expression "FUN_0021a270()" identifier (argument_list "()" ( ))) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Type propagation algorithm not settling */\n/* DWARF original name: read_cie<64, false>\n   DWARF original prototype: bool read_cie<64,_false>(Eh_frame * this, Sized_relobj_file<64,_false>\n   * object, uint shndx, uchar * symbols, section_size_type symbols_size, uchar * symbol_names,\n   section_size_type symbol_names_size, uchar * pcontents, uchar * pcie, uchar * pcieend,\n   Track_relocs<64,_false> * relocs, Offsets_to_cie * cies, New_cies * new_cies) */\n\nbool __thiscall\ngold::Eh_frame::read_cie<64,_false>\n          (Eh_frame *this,Sized_relobj_file<64,_false> *object,uint shndx,uchar *symbols,\n          section_size_type symbols_size,uchar *symbol_names,section_size_type symbol_names_size,\n          uchar *pcontents,uchar *pcie,uchar *pcieend,Track_relocs<64,_false> *relocs,\n          Offsets_to_cie *cies,New_cies *new_cies)\n\n{\n  uchar uVar1;\n  pointer ppVar2;\n  byte bVar3;\n  bool bVar4;\n  void *pvVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  Cie *cie1;\n  byte bVar9;\n  uchar *puVar10;\n  byte *pbVar11;\n  uchar *puVar12;\n  pointer ppVar13;\n  byte *__s;\n  uchar *puVar14;\n  byte bVar15;\n  off_t oVar16;\n  undefined1 *__in_chrg;\n  pair<int,_gold::Cie*> *local_9c;\n  char local_95;\n  byte local_94;\n  undefined1 local_8c [12];\n  undefined1 *local_80;\n  undefined8 local_70;\n  Cie cie;\n  \n  bVar15 = 0;\n  if (pcieend == pcie || (int)pcieend - (int)pcie < 0) {\n    return false;\n  }\n  bVar9 = *pcie;\n  if ((bVar9 & 0xfd) != 1) {\n    return false;\n  }\n  __s = pcie + 1;\n  pvVar5 = memchr(__s,0,(int)pcieend - (int)__s);\n  if (pvVar5 == (void *)0x0) {\n    return false;\n  }\n  puVar12 = (uchar *)((int)pvVar5 + 1);\n  local_95 = '\x01';\n  if ((pcie[1] == 'e') && (pcie[2] == 'h')) {\n    if (pcie[3] != '\0') {\n      return false;\n    }\n    if ((int)pcieend - (int)puVar12 < 8) {\n      return false;\n    }\n    puVar12 = (uchar *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    __s = pcie + 3;\n  }\n  if (pcieend <= puVar12) {\n    return false;\n  }\n  while ((char)*puVar12 < '\0') {\n    puVar12 = puVar12 + 1;\n    if (pcieend == puVar12) {\n      return false;\n    }\n  }\n  puVar10 = puVar12 + 1;\n  if (pcieend <= puVar10) {\n    return false;\n  }\n  uVar1 = puVar12[1];\n  while ((char)uVar1 < '\0') {\n    puVar10 = puVar10 + 1;\n    if (pcieend == puVar10) {\n      return false;\n    }\n    uVar1 = *puVar10;\n  }\n  puVar12 = puVar10 + 1;\n  if (bVar9 == 1) {\n    if (pcieend == puVar12 || (int)pcieend - (int)puVar12 < 0) {\n      return false;\n    }\n    pbVar11 = puVar10 + 2;\n  }\n  else {\n    if (pcieend <= puVar12) {\n      return false;\n    }\n    uVar1 = puVar10[1];\n    while ((char)uVar1 < '\0') {\n      puVar12 = puVar12 + 1;\n      if (pcieend == puVar12) {\n        return false;\n      }\n      uVar1 = *puVar12;\n    }\n    pbVar11 = puVar12 + 1;\n  }\n  local_94 = *__s;\n  if (local_94 == 0x7a) {\n    if (pcieend <= pbVar11) {\n      return false;\n    }\n    while ((char)*pbVar11 < '\0') {\n      pbVar11 = pbVar11 + 1;\n      if (pcieend == pbVar11) {\n        return false;\n      }\n    }\n    local_94 = __s[1];\n    pbVar11 = pbVar11 + 1;\n    if (local_94 != 0) {\n      __s = __s + 1;\n      bVar9 = local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    puVar12 = "";\n  }\n  else {\n    bVar9 = local_94;\n    if (local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (pair<int,_gold::Cie*> *)0xffffffff;\n    local_94 = 0;\n    do {\n      if (bVar9 == 0x50) {\n        if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n          return false;\n        }\n        bVar9 = *pbVar11;\n        pbVar11 = pbVar11 + 1;\n        if ((bVar9 & 0x60) == 0x60) {\n          return false;\n        }\n        bVar3 = bVar9 & 7;\n        if (bVar3 == 2) {\n          uVar7 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return false;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return false;\n            }\n          }\n          uVar7 = 8;\n        }\nLAB_002213bf:\n        uVar8 = (int)pcieend - (int)pbVar11;\n        if ((bVar9 & 0xf0) == 0x50) {\n          if (uVar8 < (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))) {\n            return false;\n          }\n          pbVar11 = pbVar11 + (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)));\n          uVar8 = (int)pcieend - (int)pbVar11;\n        }\n        local_9c = (pair<int,_gold::Cie*> *)((int)pbVar11 - (int)pcontents);\n        if (uVar8 < uVar7) {\n          return false;\n        }\n        pbVar11 = pbVar11 + uVar7;\n      }\n      else {\n        if (bVar9 < 0x51) {\n          if (bVar9 != 0x4c) {\n            return false;\n          }\n          if ((int)pcieend - (int)pbVar11 < 1) {\n            return false;\n          }\n        }\n        else {\n          if (bVar9 != 0x52) {\n            if (bVar9 != 0x53) {\n              return false;\n            }\n            goto LAB_002210d9;\n          }\n          if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n            return false;\n          }\n          local_94 = *pbVar11;\n          if (4 < (local_94 & 7)) {\n            return false;\n          }\n          if ((1 << (local_94 & 7) & 0x1dU) == 0) {\n            return false;\n          }\n        }\n        pbVar11 = pbVar11 + 1;\n      }\nLAB_002210d9:\n      __s = __s + 1;\n      bVar9 = *__s;\n    } while (bVar9 != 0);\n    if (local_9c == (pair<int,_gold::Cie*> *)0xffffffff) goto LAB_002214ac;\n    iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)(int)local_9c);\n    if (0 < iVar6) {\n      return false;\n    }\n    oVar16 = Track_relocs<64,_false>::next_offset(relocs);\n    if (oVar16 != (int)local_9c) {\n      return false;\n    }\n    uVar7 = Track_relocs<64,_false>::next_symndx(relocs);\n    if (uVar7 == 0xffffffff) {\n      return false;\n    }\n    uVar8 = (*(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x23])\n                      (object);\n    if (uVar7 < uVar8) {\n      local_95 = '\0';\n      puVar12 = "";\n    }\n    else {\n      if (symbols_size / 0x18 <= uVar7) {\n        return false;\n      }\n      if (symbol_names_size <= *(uint *)(symbols + uVar7 * 0x18)) {\n        return false;\n      }\n      puVar12 = symbol_names + *(uint *)(symbols + uVar7 * 0x18);\n    }\n    iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)((int)local_9c + 1));\n    if (iVar6 != 1) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x3af,"read_cie");\n    }\n  }\n  iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)((int)pcieend - (int)pcontents));\n  if (0 < iVar6) {\n    return false;\n  }\n  puVar10 = (uchar *)0xffffffff;\n  iVar6 = (int)(pcie + -8) - (int)pcontents;\n  cie.object_ = (Relobj *)object;\n  cie.shndx_ = shndx;\n  cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;\n  puVar14 = puVar12;\n  if (puVar12 != (uchar *)0x0) {\n    do {\n      if (puVar10 == (uchar *)0x0) break;\n      puVar10 = puVar10 + -1;\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n    } while (uVar1 != '\0');\n    puVar10 = puVar12 + (~(uint)puVar10 - 1);\n  }\n  cie.input_offset_ = iVar6;\n  cie.fde_encoding_ = local_94;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.personality_name_,puVar12,puVar10,0);\n  cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =\n       (pointer)0x0;\n                    /* try { // try from 002212a1 to 002212a5 has its CatchHandler @ 00221595 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.contents_,pcie,pcieend,0);\n  if (local_95 != '\0') {\n    local_70._0_4_ = &cie;\n    std::\n    _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n    ::find(&(this->cie_offsets_)._M_t,(Cie **)&local_70);\n    if ((_Rb_tree_header *)local_80 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {\n      ppVar2 = (new_cies->\n               super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n               )._M_impl._M_finish;\n      for (ppVar13 = (new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n                     )._M_impl._M_start; ppVar13 != ppVar2; ppVar13 = ppVar13 + 1) {\n        cie1 = ppVar13->first;\n        bVar4 = operator==(cie1,&cie);\n        if (bVar4) goto LAB_002212f4;\n      }\n    }\n    else {\n      cie1 = *(Cie **)(local_80 + 0x10);\nLAB_002212f4:\n      if (cie1 != (Cie *)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        Relobj::add_merge_mapping\n                  ((Relobj *)object,&this->super_Output_section_data,shndx,iVar6,\n                   (int)pcieend - (int)(pcie + -8),-1);\n        goto LAB_0022131f;\n      }\n    }\n  }\n  cie1 = (Cie *)operator_new(0x4c);\n                    /* try { // try from 002214d8 to 002214dc has its CatchHandler @ 00221591 */\n  Cie::Cie(cie1,&cie);\n  local_70._4_4_ = (Cie *)CONCAT31(local_70._5_3_,local_95);\n  local_70._0_4_ = cie1;\n                    /* try { // try from 002214f9 to 002214fd has its CatchHandler @ 0022158d */\n  std::vector<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>::\n  emplace_back<std::pair<gold::Cie*,_bool>_>(new_cies,(pair<gold::Cie*,_bool> *)&local_70);\nLAB_0022131f:\n  local_9c = (pair<int,_gold::Cie*> *)&local_70;\n  local_70._0_4_ = (Cie *)(pcie + -(int)pcontents);\n  __in_chrg = local_8c;\n  local_70._4_4_ = cie1;\n  std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>_>\n  ::_M_emplace_unique<std::pair<int,_gold::Cie*>_>(&cies->_M_t,local_9c);\n  Cie::~Cie(&cie,(int)__in_chrg);\n  return true;\n}\n\n" comment comment comment (declaration "bool __thiscall\ngold::Eh_frame::read_cie<64,_false>\n          (Eh_frame *this,Sized_relobj_file<64,_false> *object,uint shndx,uchar *symbols,\n          section_size_type symbols_size,uchar *symbol_names,section_size_type symbol_names_size,\n          uchar *pcontents,uchar *pcie,uchar *pcieend,Track_relocs<64,_false> *relocs,\n          Offsets_to_cie *cies,New_cies *new_cies)\n\n{\n  uchar uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Eh_frame::" identifier : : identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>\n          (Eh_frame *this,Sized_relobj_file<64,_false> *object,uint shndx,uchar *symbols,\n          section_size_type symbols_size,uchar *symbol_names,section_size_type symbol_names_size,\n          uchar *pcontents,uchar *pcie,uchar *pcieend,Track_relocs<64,_false> *relocs,\n          Offsets_to_cie *cies,New_cies *new_cies)\n\n{\n  uchar" (function_declarator "_false>\n          (Eh_frame *this,Sized_relobj_file<64,_false> *object,uint shndx,uchar *symbols,\n          section_size_type symbols_size,uchar *symbol_names,section_size_type symbol_names_size,\n          uchar *pcontents,uchar *pcie,uchar *pcieend,Track_relocs<64,_false> *relocs,\n          Offsets_to_cie *cies,New_cies *new_cies)" identifier (ERROR ">" >) (parameter_list "(Eh_frame *this,Sized_relobj_file<64,_false> *object,uint shndx,uchar *symbols,\n          section_size_type symbols_size,uchar *symbol_names,section_size_type symbol_names_size,\n          uchar *pcontents,uchar *pcie,uchar *pcieend,Track_relocs<64,_false> *relocs,\n          Offsets_to_cie *cies,New_cies *new_cies)" ( (parameter_declaration "Eh_frame *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Sized_relobj_file" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *object" type_identifier (ERROR ">" >) (pointer_declarator "*object" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) , (parameter_declaration "uchar *symbols" type_identifier (pointer_declarator "*symbols" * identifier)) , (parameter_declaration "section_size_type symbols_size" type_identifier identifier) , (parameter_declaration "uchar *symbol_names" type_identifier (pointer_declarator "*symbol_names" * identifier)) , (parameter_declaration "section_size_type symbol_names_size" type_identifier identifier) , (parameter_declaration "uchar *pcontents" type_identifier (pointer_declarator "*pcontents" * identifier)) , (parameter_declaration "uchar *pcie" type_identifier (pointer_declarator "*pcie" * identifier)) , (parameter_declaration "uchar *pcieend" type_identifier (pointer_declarator "*pcieend" * identifier)) , (parameter_declaration "Track_relocs" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *relocs" type_identifier (ERROR ">" >) (pointer_declarator "*relocs" * identifier)) , (parameter_declaration "Offsets_to_cie *cies" type_identifier (pointer_declarator "*cies" * identifier)) , (parameter_declaration "New_cies *new_cies" type_identifier (pointer_declarator "*new_cies" * identifier)) ))) { identifier) identifier ;) (declaration "pointer ppVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "void *pvVar5;" primitive_type (pointer_declarator "*pvVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "Cie *cie1;" type_identifier (pointer_declarator "*cie1" * identifier) ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "uchar *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "uchar *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "pointer ppVar13;" type_identifier identifier ;) (declaration "byte *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "uchar *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "byte bVar15;" type_identifier identifier ;) (declaration "off_t oVar16;" type_identifier identifier ;) (declaration "undefined1 *__in_chrg;" type_identifier (pointer_declarator "*__in_chrg" * identifier) ;) (ERROR "pair<int," (binary_expression "pair<int" identifier < identifier) ,) (labeled_statement "_gold::Cie*> *local_9c;" statement_identifier : (ERROR ":" :) (expression_statement "Cie*> *local_9c;" (binary_expression "Cie*> *local_9c" identifier * (ERROR ">" >) (pointer_expression "*local_9c" * identifier)) ;)) (declaration "char local_95;" primitive_type identifier ;) (declaration "byte local_94;" type_identifier identifier ;) (declaration "undefined1 local_8c [12];" type_identifier (array_declarator "local_8c [12]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "undefined8 local_70;" type_identifier identifier ;) (declaration "Cie cie;" type_identifier identifier ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (if_statement "if (pcieend == pcie || (int)pcieend - (int)pcie < 0) {\n    return false;\n  }" if (parenthesized_expression "(pcieend == pcie || (int)pcieend - (int)pcie < 0)" ( (binary_expression "pcieend == pcie || (int)pcieend - (int)pcie < 0" (binary_expression "pcieend == pcie" identifier == identifier) || (binary_expression "(int)pcieend - (int)pcie < 0" (binary_expression "(int)pcieend - (int)pcie" (cast_expression "(int)pcieend" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcie" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal)) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "bVar9 = *pcie;" (assignment_expression "bVar9 = *pcie" identifier = (pointer_expression "*pcie" * identifier)) ;) (if_statement "if ((bVar9 & 0xfd) != 1) {\n    return false;\n  }" if (parenthesized_expression "((bVar9 & 0xfd) != 1)" ( (binary_expression "(bVar9 & 0xfd) != 1" (parenthesized_expression "(bVar9 & 0xfd)" ( (binary_expression "bVar9 & 0xfd" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "__s = pcie + 1;" (assignment_expression "__s = pcie + 1" identifier = (binary_expression "pcie + 1" identifier + number_literal)) ;) (expression_statement "pvVar5 = memchr(__s,0,(int)pcieend - (int)__s);" (assignment_expression "pvVar5 = memchr(__s,0,(int)pcieend - (int)__s)" identifier = (call_expression "memchr(__s,0,(int)pcieend - (int)__s)" identifier (argument_list "(__s,0,(int)pcieend - (int)__s)" ( identifier , number_literal , (binary_expression "(int)pcieend - (int)__s" (cast_expression "(int)pcieend" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (pvVar5 == (void *)0x0) {\n    return false;\n  }" if (parenthesized_expression "(pvVar5 == (void *)0x0)" ( (binary_expression "pvVar5 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "puVar12 = (uchar *)((int)pvVar5 + 1);" (assignment_expression "puVar12 = (uchar *)((int)pvVar5 + 1)" identifier = (cast_expression "(uchar *)((int)pvVar5 + 1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar5 + 1)" ( (binary_expression "(int)pvVar5 + 1" (cast_expression "(int)pvVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_95 = '\x01';" (assignment_expression "local_95 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if ((pcie[1] == 'e') && (pcie[2] == 'h')) {\n    if (pcie[3] != '\0') {\n      return false;\n    }\n    if ((int)pcieend - (int)puVar12 < 8) {\n      return false;\n    }\n    puVar12 = (uchar *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    __s = pcie + 3;\n  }" if (parenthesized_expression "((pcie[1] == 'e') && (pcie[2] == 'h'))" ( (binary_expression "(pcie[1] == 'e') && (pcie[2] == 'h')" (parenthesized_expression "(pcie[1] == 'e')" ( (binary_expression "pcie[1] == 'e'" (subscript_expression "pcie[1]" identifier [ number_literal ]) == (char_literal "'e'" ' character ')) )) && (parenthesized_expression "(pcie[2] == 'h')" ( (binary_expression "pcie[2] == 'h'" (subscript_expression "pcie[2]" identifier [ number_literal ]) == (char_literal "'h'" ' character ')) ))) )) (compound_statement "{\n    if (pcie[3] != '\0') {\n      return false;\n    }\n    if ((int)pcieend - (int)puVar12 < 8) {\n      return false;\n    }\n    puVar12 = (uchar *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    __s = pcie + 3;\n  }" { (if_statement "if (pcie[3] != '\0') {\n      return false;\n    }" if (parenthesized_expression "(pcie[3] != '\0')" ( (binary_expression "pcie[3] != '\0'" (subscript_expression "pcie[3]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (if_statement "if ((int)pcieend - (int)puVar12 < 8) {\n      return false;\n    }" if (parenthesized_expression "((int)pcieend - (int)puVar12 < 8)" ( (binary_expression "(int)pcieend - (int)puVar12 < 8" (binary_expression "(int)pcieend - (int)puVar12" (cast_expression "(int)pcieend" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "puVar12 = (uchar *)((int)pvVar5 + 9);" (assignment_expression "puVar12 = (uchar *)((int)pvVar5 + 9)" identifier = (cast_expression "(uchar *)((int)pvVar5 + 9)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar5 + 9)" ( (binary_expression "(int)pvVar5 + 9" (cast_expression "(int)pvVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_95 = '\0';" (assignment_expression "local_95 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "__s = pcie + 3;" (assignment_expression "__s = pcie + 3" identifier = (binary_expression "pcie + 3" identifier + number_literal)) ;) })) (if_statement "if (pcieend <= puVar12) {\n    return false;\n  }" if (parenthesized_expression "(pcieend <= puVar12)" ( (binary_expression "pcieend <= puVar12" identifier <= identifier) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (while_statement "while ((char)*puVar12 < '\0') {\n    puVar12 = puVar12 + 1;\n    if (pcieend == puVar12) {\n      return false;\n    }\n  }" while (parenthesized_expression "((char)*puVar12 < '\0')" ( (binary_expression "(char)*puVar12 < '\0'" (cast_expression "(char)*puVar12" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar12" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    puVar12 = puVar12 + 1;\n    if (pcieend == puVar12) {\n      return false;\n    }\n  }" { (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (if_statement "if (pcieend == puVar12) {\n      return false;\n    }" if (parenthesized_expression "(pcieend == puVar12)" ( (binary_expression "pcieend == puVar12" identifier == identifier) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) })) (expression_statement "puVar10 = puVar12 + 1;" (assignment_expression "puVar10 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (if_statement "if (pcieend <= puVar10) {\n    return false;\n  }" if (parenthesized_expression "(pcieend <= puVar10)" ( (binary_expression "pcieend <= puVar10" identifier <= identifier) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "uVar1 = puVar12[1];" (assignment_expression "uVar1 = puVar12[1]" identifier = (subscript_expression "puVar12[1]" identifier [ number_literal ])) ;) (while_statement "while ((char)uVar1 < '\0') {\n    puVar10 = puVar10 + 1;\n    if (pcieend == puVar10) {\n      return false;\n    }\n    uVar1 = *puVar10;\n  }" while (parenthesized_expression "((char)uVar1 < '\0')" ( (binary_expression "(char)uVar1 < '\0'" (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    puVar10 = puVar10 + 1;\n    if (pcieend == puVar10) {\n      return false;\n    }\n    uVar1 = *puVar10;\n  }" { (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (if_statement "if (pcieend == puVar10) {\n      return false;\n    }" if (parenthesized_expression "(pcieend == puVar10)" ( (binary_expression "pcieend == puVar10" identifier == identifier) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "uVar1 = *puVar10;" (assignment_expression "uVar1 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) })) (expression_statement "puVar12 = puVar10 + 1;" (assignment_expression "puVar12 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (if_statement "if (bVar9 == 1) {\n    if (pcieend == puVar12 || (int)pcieend - (int)puVar12 < 0) {\n      return false;\n    }\n    pbVar11 = puVar10 + 2;\n  }\n  else {\n    if (pcieend <= puVar12) {\n      return false;\n    }\n    uVar1 = puVar10[1];\n    while ((char)uVar1 < '\0') {\n      puVar12 = puVar12 + 1;\n      if (pcieend == puVar12) {\n        return false;\n      }\n      uVar1 = *puVar12;\n    }\n    pbVar11 = puVar12 + 1;\n  }" if (parenthesized_expression "(bVar9 == 1)" ( (binary_expression "bVar9 == 1" identifier == number_literal) )) (compound_statement "{\n    if (pcieend == puVar12 || (int)pcieend - (int)puVar12 < 0) {\n      return false;\n    }\n    pbVar11 = puVar10 + 2;\n  }" { (if_statement "if (pcieend == puVar12 || (int)pcieend - (int)puVar12 < 0) {\n      return false;\n    }" if (parenthesized_expression "(pcieend == puVar12 || (int)pcieend - (int)puVar12 < 0)" ( (binary_expression "pcieend == puVar12 || (int)pcieend - (int)puVar12 < 0" (binary_expression "pcieend == puVar12" identifier == identifier) || (binary_expression "(int)pcieend - (int)puVar12 < 0" (binary_expression "(int)pcieend - (int)puVar12" (cast_expression "(int)pcieend" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal)) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "pbVar11 = puVar10 + 2;" (assignment_expression "pbVar11 = puVar10 + 2" identifier = (binary_expression "puVar10 + 2" identifier + number_literal)) ;) }) (else_clause "else {\n    if (pcieend <= puVar12) {\n      return false;\n    }\n    uVar1 = puVar10[1];\n    while ((char)uVar1 < '\0') {\n      puVar12 = puVar12 + 1;\n      if (pcieend == puVar12) {\n        return false;\n      }\n      uVar1 = *puVar12;\n    }\n    pbVar11 = puVar12 + 1;\n  }" else (compound_statement "{\n    if (pcieend <= puVar12) {\n      return false;\n    }\n    uVar1 = puVar10[1];\n    while ((char)uVar1 < '\0') {\n      puVar12 = puVar12 + 1;\n      if (pcieend == puVar12) {\n        return false;\n      }\n      uVar1 = *puVar12;\n    }\n    pbVar11 = puVar12 + 1;\n  }" { (if_statement "if (pcieend <= puVar12) {\n      return false;\n    }" if (parenthesized_expression "(pcieend <= puVar12)" ( (binary_expression "pcieend <= puVar12" identifier <= identifier) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "uVar1 = puVar10[1];" (assignment_expression "uVar1 = puVar10[1]" identifier = (subscript_expression "puVar10[1]" identifier [ number_literal ])) ;) (while_statement "while ((char)uVar1 < '\0') {\n      puVar12 = puVar12 + 1;\n      if (pcieend == puVar12) {\n        return false;\n      }\n      uVar1 = *puVar12;\n    }" while (parenthesized_expression "((char)uVar1 < '\0')" ( (binary_expression "(char)uVar1 < '\0'" (cast_expression "(char)uVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar12 = puVar12 + 1;\n      if (pcieend == puVar12) {\n        return false;\n      }\n      uVar1 = *puVar12;\n    }" { (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (if_statement "if (pcieend == puVar12) {\n        return false;\n      }" if (parenthesized_expression "(pcieend == puVar12)" ( (binary_expression "pcieend == puVar12" identifier == identifier) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (expression_statement "uVar1 = *puVar12;" (assignment_expression "uVar1 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) })) (expression_statement "pbVar11 = puVar12 + 1;" (assignment_expression "pbVar11 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) }))) (expression_statement "local_94 = *__s;" (assignment_expression "local_94 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) (if_statement "if (local_94 == 0x7a) {\n    if (pcieend <= pbVar11) {\n      return false;\n    }\n    while ((char)*pbVar11 < '\0') {\n      pbVar11 = pbVar11 + 1;\n      if (pcieend == pbVar11) {\n        return false;\n      }\n    }\n    local_94 = __s[1];\n    pbVar11 = pbVar11 + 1;\n    if (local_94 != 0) {\n      __s = __s + 1;\n      bVar9 = local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    puVar12 = "";\n  }\n  else {\n    bVar9 = local_94;\n    if (local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (pair<int,_gold::Cie*> *)0xffffffff;\n    local_94 = 0;\n    do {\n      if (bVar9 == 0x50) {\n        if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n          return false;\n        }\n        bVar9 = *pbVar11;\n        pbVar11 = pbVar11 + 1;\n        if ((bVar9 & 0x60) == 0x60) {\n          return false;\n        }\n        bVar3 = bVar9 & 7;\n        if (bVar3 == 2) {\n          uVar7 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return false;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return false;\n            }\n          }\n          uVar7 = 8;\n        }\nLAB_002213bf:\n        uVar8 = (int)pcieend - (int)pbVar11;\n        if ((bVar9 & 0xf0) == 0x50) {\n          if (uVar8 < (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))) {\n            return false;\n          }\n          pbVar11 = pbVar11 + (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)));\n          uVar8 = (int)pcieend - (int)pbVar11;\n        }\n        local_9c = (pair<int,_gold::Cie*> *)((int)pbVar11 - (int)pcontents);\n        if (uVar8 < uVar7) {\n          return false;\n        }\n        pbVar11 = pbVar11 + uVar7;\n      }\n      else {\n        if (bVar9 < 0x51) {\n          if (bVar9 != 0x4c) {\n            return false;\n          }\n          if ((int)pcieend - (int)pbVar11 < 1) {\n            return false;\n          }\n        }\n        else {\n          if (bVar9 != 0x52) {\n            if (bVar9 != 0x53) {\n              return false;\n            }\n            goto LAB_002210d9;\n          }\n          if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n            return false;\n          }\n          local_94 = *pbVar11;\n          if (4 < (local_94 & 7)) {\n            return false;\n          }\n          if ((1 << (local_94 & 7) & 0x1dU) == 0) {\n            return false;\n          }\n        }\n        pbVar11 = pbVar11 + 1;\n      }\nLAB_002210d9:\n      __s = __s + 1;\n      bVar9 = *__s;\n    } while (bVar9 != 0);\n    if (local_9c == (pair<int,_gold::Cie*> *)0xffffffff) goto LAB_002214ac;\n    iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)(int)local_9c);\n    if (0 < iVar6) {\n      return false;\n    }\n    oVar16 = Track_relocs<64,_false>::next_offset(relocs);\n    if (oVar16 != (int)local_9c) {\n      return false;\n    }\n    uVar7 = Track_relocs<64,_false>::next_symndx(relocs);\n    if (uVar7 == 0xffffffff) {\n      return false;\n    }\n    uVar8 = (*(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x23])\n                      (object);\n    if (uVar7 < uVar8) {\n      local_95 = '\0';\n      puVar12 = "";\n    }\n    else {\n      if (symbols_size / 0x18 <= uVar7) {\n        return false;\n      }\n      if (symbol_names_size <= *(uint *)(symbols + uVar7 * 0x18)) {\n        return false;\n      }\n      puVar12 = symbol_names + *(uint *)(symbols + uVar7 * 0x18);\n    }\n    iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)((int)local_9c + 1));\n    if (iVar6 != 1) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x3af,"read_cie");\n    }\n  }" if (parenthesized_expression "(local_94 == 0x7a)" ( (binary_expression "local_94 == 0x7a" identifier == number_literal) )) (compound_statement "{\n    if (pcieend <= pbVar11) {\n      return false;\n    }\n    while ((char)*pbVar11 < '\0') {\n      pbVar11 = pbVar11 + 1;\n      if (pcieend == pbVar11) {\n        return false;\n      }\n    }\n    local_94 = __s[1];\n    pbVar11 = pbVar11 + 1;\n    if (local_94 != 0) {\n      __s = __s + 1;\n      bVar9 = local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    puVar12 = "";\n  }" { (if_statement "if (pcieend <= pbVar11) {\n      return false;\n    }" if (parenthesized_expression "(pcieend <= pbVar11)" ( (binary_expression "pcieend <= pbVar11" identifier <= identifier) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (while_statement "while ((char)*pbVar11 < '\0') {\n      pbVar11 = pbVar11 + 1;\n      if (pcieend == pbVar11) {\n        return false;\n      }\n    }" while (parenthesized_expression "((char)*pbVar11 < '\0')" ( (binary_expression "(char)*pbVar11 < '\0'" (cast_expression "(char)*pbVar11" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar11" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pbVar11 = pbVar11 + 1;\n      if (pcieend == pbVar11) {\n        return false;\n      }\n    }" { (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pcieend == pbVar11) {\n        return false;\n      }" if (parenthesized_expression "(pcieend == pbVar11)" ( (binary_expression "pcieend == pbVar11" identifier == identifier) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) })) (expression_statement "local_94 = __s[1];" (assignment_expression "local_94 = __s[1]" identifier = (subscript_expression "__s[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (if_statement "if (local_94 != 0) {\n      __s = __s + 1;\n      bVar9 = local_94;\n      goto LAB_002210a7;\n    }" if (parenthesized_expression "(local_94 != 0)" ( (binary_expression "local_94 != 0" identifier != number_literal) )) (compound_statement "{\n      __s = __s + 1;\n      bVar9 = local_94;\n      goto LAB_002210a7;\n    }" { (expression_statement "__s = __s + 1;" (assignment_expression "__s = __s + 1" identifier = (binary_expression "__s + 1" identifier + number_literal)) ;) (expression_statement "bVar9 = local_94;" (assignment_expression "bVar9 = local_94" identifier = identifier) ;) (goto_statement "goto LAB_002210a7;" goto statement_identifier ;) })) (labeled_statement "LAB_002214ac:\n    puVar12 = "";" statement_identifier : (expression_statement "puVar12 = "";" (assignment_expression "puVar12 = """ identifier = (string_literal """" " ")) ;)) }) (else_clause "else {\n    bVar9 = local_94;\n    if (local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (pair<int,_gold::Cie*> *)0xffffffff;\n    local_94 = 0;\n    do {\n      if (bVar9 == 0x50) {\n        if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n          return false;\n        }\n        bVar9 = *pbVar11;\n        pbVar11 = pbVar11 + 1;\n        if ((bVar9 & 0x60) == 0x60) {\n          return false;\n        }\n        bVar3 = bVar9 & 7;\n        if (bVar3 == 2) {\n          uVar7 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return false;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return false;\n            }\n          }\n          uVar7 = 8;\n        }\nLAB_002213bf:\n        uVar8 = (int)pcieend - (int)pbVar11;\n        if ((bVar9 & 0xf0) == 0x50) {\n          if (uVar8 < (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))) {\n            return false;\n          }\n          pbVar11 = pbVar11 + (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)));\n          uVar8 = (int)pcieend - (int)pbVar11;\n        }\n        local_9c = (pair<int,_gold::Cie*> *)((int)pbVar11 - (int)pcontents);\n        if (uVar8 < uVar7) {\n          return false;\n        }\n        pbVar11 = pbVar11 + uVar7;\n      }\n      else {\n        if (bVar9 < 0x51) {\n          if (bVar9 != 0x4c) {\n            return false;\n          }\n          if ((int)pcieend - (int)pbVar11 < 1) {\n            return false;\n          }\n        }\n        else {\n          if (bVar9 != 0x52) {\n            if (bVar9 != 0x53) {\n              return false;\n            }\n            goto LAB_002210d9;\n          }\n          if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n            return false;\n          }\n          local_94 = *pbVar11;\n          if (4 < (local_94 & 7)) {\n            return false;\n          }\n          if ((1 << (local_94 & 7) & 0x1dU) == 0) {\n            return false;\n          }\n        }\n        pbVar11 = pbVar11 + 1;\n      }\nLAB_002210d9:\n      __s = __s + 1;\n      bVar9 = *__s;\n    } while (bVar9 != 0);\n    if (local_9c == (pair<int,_gold::Cie*> *)0xffffffff) goto LAB_002214ac;\n    iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)(int)local_9c);\n    if (0 < iVar6) {\n      return false;\n    }\n    oVar16 = Track_relocs<64,_false>::next_offset(relocs);\n    if (oVar16 != (int)local_9c) {\n      return false;\n    }\n    uVar7 = Track_relocs<64,_false>::next_symndx(relocs);\n    if (uVar7 == 0xffffffff) {\n      return false;\n    }\n    uVar8 = (*(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x23])\n                      (object);\n    if (uVar7 < uVar8) {\n      local_95 = '\0';\n      puVar12 = "";\n    }\n    else {\n      if (symbols_size / 0x18 <= uVar7) {\n        return false;\n      }\n      if (symbol_names_size <= *(uint *)(symbols + uVar7 * 0x18)) {\n        return false;\n      }\n      puVar12 = symbol_names + *(uint *)(symbols + uVar7 * 0x18);\n    }\n    iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)((int)local_9c + 1));\n    if (iVar6 != 1) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x3af,"read_cie");\n    }\n  }" else (compound_statement "{\n    bVar9 = local_94;\n    if (local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (pair<int,_gold::Cie*> *)0xffffffff;\n    local_94 = 0;\n    do {\n      if (bVar9 == 0x50) {\n        if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n          return false;\n        }\n        bVar9 = *pbVar11;\n        pbVar11 = pbVar11 + 1;\n        if ((bVar9 & 0x60) == 0x60) {\n          return false;\n        }\n        bVar3 = bVar9 & 7;\n        if (bVar3 == 2) {\n          uVar7 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return false;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return false;\n            }\n          }\n          uVar7 = 8;\n        }\nLAB_002213bf:\n        uVar8 = (int)pcieend - (int)pbVar11;\n        if ((bVar9 & 0xf0) == 0x50) {\n          if (uVar8 < (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))) {\n            return false;\n          }\n          pbVar11 = pbVar11 + (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)));\n          uVar8 = (int)pcieend - (int)pbVar11;\n        }\n        local_9c = (pair<int,_gold::Cie*> *)((int)pbVar11 - (int)pcontents);\n        if (uVar8 < uVar7) {\n          return false;\n        }\n        pbVar11 = pbVar11 + uVar7;\n      }\n      else {\n        if (bVar9 < 0x51) {\n          if (bVar9 != 0x4c) {\n            return false;\n          }\n          if ((int)pcieend - (int)pbVar11 < 1) {\n            return false;\n          }\n        }\n        else {\n          if (bVar9 != 0x52) {\n            if (bVar9 != 0x53) {\n              return false;\n            }\n            goto LAB_002210d9;\n          }\n          if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n            return false;\n          }\n          local_94 = *pbVar11;\n          if (4 < (local_94 & 7)) {\n            return false;\n          }\n          if ((1 << (local_94 & 7) & 0x1dU) == 0) {\n            return false;\n          }\n        }\n        pbVar11 = pbVar11 + 1;\n      }\nLAB_002210d9:\n      __s = __s + 1;\n      bVar9 = *__s;\n    } while (bVar9 != 0);\n    if (local_9c == (pair<int,_gold::Cie*> *)0xffffffff) goto LAB_002214ac;\n    iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)(int)local_9c);\n    if (0 < iVar6) {\n      return false;\n    }\n    oVar16 = Track_relocs<64,_false>::next_offset(relocs);\n    if (oVar16 != (int)local_9c) {\n      return false;\n    }\n    uVar7 = Track_relocs<64,_false>::next_symndx(relocs);\n    if (uVar7 == 0xffffffff) {\n      return false;\n    }\n    uVar8 = (*(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x23])\n                      (object);\n    if (uVar7 < uVar8) {\n      local_95 = '\0';\n      puVar12 = "";\n    }\n    else {\n      if (symbols_size / 0x18 <= uVar7) {\n        return false;\n      }\n      if (symbol_names_size <= *(uint *)(symbols + uVar7 * 0x18)) {\n        return false;\n      }\n      puVar12 = symbol_names + *(uint *)(symbols + uVar7 * 0x18);\n    }\n    iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)((int)local_9c + 1));\n    if (iVar6 != 1) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x3af,"read_cie");\n    }\n  }" { (expression_statement "bVar9 = local_94;" (assignment_expression "bVar9 = local_94" identifier = identifier) ;) (if_statement "if (local_94 == 0) goto LAB_002214ac;" if (parenthesized_expression "(local_94 == 0)" ( (binary_expression "local_94 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002214ac;" goto statement_identifier ;)) (labeled_statement "LAB_002210a7:\n    local_9c = (pair<int,_gold::Cie*> *)0xffffffff;\n    local_94 = 0;" statement_identifier : (expression_statement "local_9c = (pair<int,_gold::Cie*> *)0xffffffff;\n    local_94 = 0;" (assignment_expression "local_9c = (pair<int,_gold::Cie*> *)0xffffffff;\n    local_94 = 0" identifier = (parenthesized_expression "(pair<int,_gold::Cie*> *)0xffffffff;\n    local_94 = 0" ( (ERROR "pair<int,_gold::Cie*> *)0xffffffff;" (comma_expression "pair<int,_gold" (binary_expression "pair<int" identifier < identifier) , identifier) : : (binary_expression "Cie*> *)0xffffffff" (binary_expression "Cie*" identifier * identifier) > (pointer_expression "*)0xffffffff" * (ERROR ")" )) number_literal)) ;) (assignment_expression "local_94 = 0" identifier = number_literal) ))) ;)) (do_statement "do {\n      if (bVar9 == 0x50) {\n        if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n          return false;\n        }\n        bVar9 = *pbVar11;\n        pbVar11 = pbVar11 + 1;\n        if ((bVar9 & 0x60) == 0x60) {\n          return false;\n        }\n        bVar3 = bVar9 & 7;\n        if (bVar3 == 2) {\n          uVar7 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return false;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return false;\n            }\n          }\n          uVar7 = 8;\n        }\nLAB_002213bf:\n        uVar8 = (int)pcieend - (int)pbVar11;\n        if ((bVar9 & 0xf0) == 0x50) {\n          if (uVar8 < (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))) {\n            return false;\n          }\n          pbVar11 = pbVar11 + (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)));\n          uVar8 = (int)pcieend - (int)pbVar11;\n        }\n        local_9c = (pair<int,_gold::Cie*> *)((int)pbVar11 - (int)pcontents);\n        if (uVar8 < uVar7) {\n          return false;\n        }\n        pbVar11 = pbVar11 + uVar7;\n      }\n      else {\n        if (bVar9 < 0x51) {\n          if (bVar9 != 0x4c) {\n            return false;\n          }\n          if ((int)pcieend - (int)pbVar11 < 1) {\n            return false;\n          }\n        }\n        else {\n          if (bVar9 != 0x52) {\n            if (bVar9 != 0x53) {\n              return false;\n            }\n            goto LAB_002210d9;\n          }\n          if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n            return false;\n          }\n          local_94 = *pbVar11;\n          if (4 < (local_94 & 7)) {\n            return false;\n          }\n          if ((1 << (local_94 & 7) & 0x1dU) == 0) {\n            return false;\n          }\n        }\n        pbVar11 = pbVar11 + 1;\n      }\nLAB_002210d9:\n      __s = __s + 1;\n      bVar9 = *__s;\n    } while (bVar9 != 0);" do (compound_statement "{\n      if (bVar9 == 0x50) {\n        if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n          return false;\n        }\n        bVar9 = *pbVar11;\n        pbVar11 = pbVar11 + 1;\n        if ((bVar9 & 0x60) == 0x60) {\n          return false;\n        }\n        bVar3 = bVar9 & 7;\n        if (bVar3 == 2) {\n          uVar7 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return false;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return false;\n            }\n          }\n          uVar7 = 8;\n        }\nLAB_002213bf:\n        uVar8 = (int)pcieend - (int)pbVar11;\n        if ((bVar9 & 0xf0) == 0x50) {\n          if (uVar8 < (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))) {\n            return false;\n          }\n          pbVar11 = pbVar11 + (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)));\n          uVar8 = (int)pcieend - (int)pbVar11;\n        }\n        local_9c = (pair<int,_gold::Cie*> *)((int)pbVar11 - (int)pcontents);\n        if (uVar8 < uVar7) {\n          return false;\n        }\n        pbVar11 = pbVar11 + uVar7;\n      }\n      else {\n        if (bVar9 < 0x51) {\n          if (bVar9 != 0x4c) {\n            return false;\n          }\n          if ((int)pcieend - (int)pbVar11 < 1) {\n            return false;\n          }\n        }\n        else {\n          if (bVar9 != 0x52) {\n            if (bVar9 != 0x53) {\n              return false;\n            }\n            goto LAB_002210d9;\n          }\n          if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n            return false;\n          }\n          local_94 = *pbVar11;\n          if (4 < (local_94 & 7)) {\n            return false;\n          }\n          if ((1 << (local_94 & 7) & 0x1dU) == 0) {\n            return false;\n          }\n        }\n        pbVar11 = pbVar11 + 1;\n      }\nLAB_002210d9:\n      __s = __s + 1;\n      bVar9 = *__s;\n    }" { (if_statement "if (bVar9 == 0x50) {\n        if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n          return false;\n        }\n        bVar9 = *pbVar11;\n        pbVar11 = pbVar11 + 1;\n        if ((bVar9 & 0x60) == 0x60) {\n          return false;\n        }\n        bVar3 = bVar9 & 7;\n        if (bVar3 == 2) {\n          uVar7 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return false;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return false;\n            }\n          }\n          uVar7 = 8;\n        }\nLAB_002213bf:\n        uVar8 = (int)pcieend - (int)pbVar11;\n        if ((bVar9 & 0xf0) == 0x50) {\n          if (uVar8 < (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))) {\n            return false;\n          }\n          pbVar11 = pbVar11 + (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)));\n          uVar8 = (int)pcieend - (int)pbVar11;\n        }\n        local_9c = (pair<int,_gold::Cie*> *)((int)pbVar11 - (int)pcontents);\n        if (uVar8 < uVar7) {\n          return false;\n        }\n        pbVar11 = pbVar11 + uVar7;\n      }\n      else {\n        if (bVar9 < 0x51) {\n          if (bVar9 != 0x4c) {\n            return false;\n          }\n          if ((int)pcieend - (int)pbVar11 < 1) {\n            return false;\n          }\n        }\n        else {\n          if (bVar9 != 0x52) {\n            if (bVar9 != 0x53) {\n              return false;\n            }\n            goto LAB_002210d9;\n          }\n          if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n            return false;\n          }\n          local_94 = *pbVar11;\n          if (4 < (local_94 & 7)) {\n            return false;\n          }\n          if ((1 << (local_94 & 7) & 0x1dU) == 0) {\n            return false;\n          }\n        }\n        pbVar11 = pbVar11 + 1;\n      }" if (parenthesized_expression "(bVar9 == 0x50)" ( (binary_expression "bVar9 == 0x50" identifier == number_literal) )) (compound_statement "{\n        if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n          return false;\n        }\n        bVar9 = *pbVar11;\n        pbVar11 = pbVar11 + 1;\n        if ((bVar9 & 0x60) == 0x60) {\n          return false;\n        }\n        bVar3 = bVar9 & 7;\n        if (bVar3 == 2) {\n          uVar7 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return false;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return false;\n            }\n          }\n          uVar7 = 8;\n        }\nLAB_002213bf:\n        uVar8 = (int)pcieend - (int)pbVar11;\n        if ((bVar9 & 0xf0) == 0x50) {\n          if (uVar8 < (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))) {\n            return false;\n          }\n          pbVar11 = pbVar11 + (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)));\n          uVar8 = (int)pcieend - (int)pbVar11;\n        }\n        local_9c = (pair<int,_gold::Cie*> *)((int)pbVar11 - (int)pcontents);\n        if (uVar8 < uVar7) {\n          return false;\n        }\n        pbVar11 = pbVar11 + uVar7;\n      }" { (if_statement "if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n          return false;\n        }" if (parenthesized_expression "(pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0)" ( (binary_expression "pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0" (binary_expression "pcieend == pbVar11" identifier == identifier) || (binary_expression "(int)pcieend - (int)pbVar11 < 0" (binary_expression "(int)pcieend - (int)pbVar11" (cast_expression "(int)pcieend" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal)) )) (compound_statement "{\n          return false;\n        }" { (return_statement "return false;" return false ;) })) (expression_statement "bVar9 = *pbVar11;" (assignment_expression "bVar9 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (if_statement "if ((bVar9 & 0x60) == 0x60) {\n          return false;\n        }" if (parenthesized_expression "((bVar9 & 0x60) == 0x60)" ( (binary_expression "(bVar9 & 0x60) == 0x60" (parenthesized_expression "(bVar9 & 0x60)" ( (binary_expression "bVar9 & 0x60" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          return false;\n        }" { (return_statement "return false;" return false ;) })) (expression_statement "bVar3 = bVar9 & 7;" (assignment_expression "bVar3 = bVar9 & 7" identifier = (binary_expression "bVar9 & 7" identifier & number_literal)) ;) (if_statement "if (bVar3 == 2) {\n          uVar7 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return false;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return false;\n            }\n          }\n          uVar7 = 8;\n        }" if (parenthesized_expression "(bVar3 == 2)" ( (binary_expression "bVar3 == 2" identifier == number_literal) )) (compound_statement "{\n          uVar7 = 2;\n        }" { (expression_statement "uVar7 = 2;" (assignment_expression "uVar7 = 2" identifier = number_literal) ;) }) (else_clause "else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return false;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return false;\n            }\n          }\n          uVar7 = 8;\n        }" else (compound_statement "{\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return false;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return false;\n            }\n          }\n          uVar7 = 8;\n        }" { (if_statement "if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return false;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return false;\n            }\n          }" if (parenthesized_expression "(bVar3 < 3)" ( (binary_expression "bVar3 < 3" identifier < number_literal) )) (compound_statement "{\n            if (bVar3 != 0) {\n              return false;\n            }\n          }" { (if_statement "if (bVar3 != 0) {\n              return false;\n            }" if (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )) (compound_statement "{\n              return false;\n            }" { (return_statement "return false;" return false ;) })) }) (else_clause "else {\n            if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return false;\n            }\n          }" else (compound_statement "{\n            if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return false;\n            }\n          }" { (if_statement "if (bVar3 == 3) {\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }" if (parenthesized_expression "(bVar3 == 3)" ( (binary_expression "bVar3 == 3" identifier == number_literal) )) (compound_statement "{\n              uVar7 = 4;\n              goto LAB_002213bf;\n            }" { (expression_statement "uVar7 = 4;" (assignment_expression "uVar7 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_002213bf;" goto statement_identifier ;) })) (if_statement "if (bVar3 != 4) {\n              return false;\n            }" if (parenthesized_expression "(bVar3 != 4)" ( (binary_expression "bVar3 != 4" identifier != number_literal) )) (compound_statement "{\n              return false;\n            }" { (return_statement "return false;" return false ;) })) }))) (expression_statement "uVar7 = 8;" (assignment_expression "uVar7 = 8" identifier = number_literal) ;) }))) (labeled_statement "LAB_002213bf:\n        uVar8 = (int)pcieend - (int)pbVar11;" statement_identifier : (expression_statement "uVar8 = (int)pcieend - (int)pbVar11;" (assignment_expression "uVar8 = (int)pcieend - (int)pbVar11" identifier = (binary_expression "(int)pcieend - (int)pbVar11" (cast_expression "(int)pcieend" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) (if_statement "if ((bVar9 & 0xf0) == 0x50) {\n          if (uVar8 < (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))) {\n            return false;\n          }\n          pbVar11 = pbVar11 + (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)));\n          uVar8 = (int)pcieend - (int)pbVar11;\n        }" if (parenthesized_expression "((bVar9 & 0xf0) == 0x50)" ( (binary_expression "(bVar9 & 0xf0) == 0x50" (parenthesized_expression "(bVar9 & 0xf0)" ( (binary_expression "bVar9 & 0xf0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if (uVar8 < (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))) {\n            return false;\n          }\n          pbVar11 = pbVar11 + (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)));\n          uVar8 = (int)pcieend - (int)pbVar11;\n        }" { (if_statement "if (uVar8 < (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))) {\n            return false;\n          }" if (parenthesized_expression "(uVar8 < (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie))))" ( (binary_expression "uVar8 < (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))" identifier < (parenthesized_expression "(-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))" ( (binary_expression "-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie))" (unary_expression "-uVar7" - identifier) & (call_expression "(uint)(pbVar11 + ((uVar7 - 1) - (int)pcie))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar11 + ((uVar7 - 1) - (int)pcie))" ( (binary_expression "pbVar11 + ((uVar7 - 1) - (int)pcie)" identifier + (parenthesized_expression "((uVar7 - 1) - (int)pcie)" ( (binary_expression "(uVar7 - 1) - (int)pcie" (parenthesized_expression "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) )) - (cast_expression "(int)pcie" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ))) )) (compound_statement "{\n            return false;\n          }" { (return_statement "return false;" return false ;) })) (expression_statement "pbVar11 = pbVar11 + (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)));" (assignment_expression "pbVar11 = pbVar11 + (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))" identifier = (binary_expression "pbVar11 + (-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))" identifier + (parenthesized_expression "(-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie)))" ( (binary_expression "-uVar7 & (uint)(pbVar11 + ((uVar7 - 1) - (int)pcie))" (unary_expression "-uVar7" - identifier) & (call_expression "(uint)(pbVar11 + ((uVar7 - 1) - (int)pcie))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar11 + ((uVar7 - 1) - (int)pcie))" ( (binary_expression "pbVar11 + ((uVar7 - 1) - (int)pcie)" identifier + (parenthesized_expression "((uVar7 - 1) - (int)pcie)" ( (binary_expression "(uVar7 - 1) - (int)pcie" (parenthesized_expression "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) )) - (cast_expression "(int)pcie" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) )))) ;) (expression_statement "uVar8 = (int)pcieend - (int)pbVar11;" (assignment_expression "uVar8 = (int)pcieend - (int)pbVar11" identifier = (binary_expression "(int)pcieend - (int)pbVar11" (cast_expression "(int)pcieend" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "local_9c = (pair<int,_gold::Cie*> *)((int)pbVar11 - (int)pcontents);" (assignment_expression "local_9c = (pair<int,_gold::Cie*> *)((int)pbVar11 - (int)pcontents)" identifier = (call_expression "(pair<int,_gold::Cie*> *)((int)pbVar11 - (int)pcontents)" (parenthesized_expression "(pair<int,_gold::Cie*> *)" ( (ERROR "pair<int,_gold::" (comma_expression "pair<int,_gold" (binary_expression "pair<int" identifier < identifier) , identifier) : :) (binary_expression "Cie*> *" (binary_expression "Cie*" identifier * identifier) > (pointer_expression "*" * identifier)) )) (argument_list "((int)pbVar11 - (int)pcontents)" ( (binary_expression "(int)pbVar11 - (int)pcontents" (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcontents" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (uVar8 < uVar7) {\n          return false;\n        }" if (parenthesized_expression "(uVar8 < uVar7)" ( (binary_expression "uVar8 < uVar7" identifier < identifier) )) (compound_statement "{\n          return false;\n        }" { (return_statement "return false;" return false ;) })) (expression_statement "pbVar11 = pbVar11 + uVar7;" (assignment_expression "pbVar11 = pbVar11 + uVar7" identifier = (binary_expression "pbVar11 + uVar7" identifier + identifier)) ;) }) (else_clause "else {\n        if (bVar9 < 0x51) {\n          if (bVar9 != 0x4c) {\n            return false;\n          }\n          if ((int)pcieend - (int)pbVar11 < 1) {\n            return false;\n          }\n        }\n        else {\n          if (bVar9 != 0x52) {\n            if (bVar9 != 0x53) {\n              return false;\n            }\n            goto LAB_002210d9;\n          }\n          if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n            return false;\n          }\n          local_94 = *pbVar11;\n          if (4 < (local_94 & 7)) {\n            return false;\n          }\n          if ((1 << (local_94 & 7) & 0x1dU) == 0) {\n            return false;\n          }\n        }\n        pbVar11 = pbVar11 + 1;\n      }" else (compound_statement "{\n        if (bVar9 < 0x51) {\n          if (bVar9 != 0x4c) {\n            return false;\n          }\n          if ((int)pcieend - (int)pbVar11 < 1) {\n            return false;\n          }\n        }\n        else {\n          if (bVar9 != 0x52) {\n            if (bVar9 != 0x53) {\n              return false;\n            }\n            goto LAB_002210d9;\n          }\n          if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n            return false;\n          }\n          local_94 = *pbVar11;\n          if (4 < (local_94 & 7)) {\n            return false;\n          }\n          if ((1 << (local_94 & 7) & 0x1dU) == 0) {\n            return false;\n          }\n        }\n        pbVar11 = pbVar11 + 1;\n      }" { (if_statement "if (bVar9 < 0x51) {\n          if (bVar9 != 0x4c) {\n            return false;\n          }\n          if ((int)pcieend - (int)pbVar11 < 1) {\n            return false;\n          }\n        }\n        else {\n          if (bVar9 != 0x52) {\n            if (bVar9 != 0x53) {\n              return false;\n            }\n            goto LAB_002210d9;\n          }\n          if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n            return false;\n          }\n          local_94 = *pbVar11;\n          if (4 < (local_94 & 7)) {\n            return false;\n          }\n          if ((1 << (local_94 & 7) & 0x1dU) == 0) {\n            return false;\n          }\n        }" if (parenthesized_expression "(bVar9 < 0x51)" ( (binary_expression "bVar9 < 0x51" identifier < number_literal) )) (compound_statement "{\n          if (bVar9 != 0x4c) {\n            return false;\n          }\n          if ((int)pcieend - (int)pbVar11 < 1) {\n            return false;\n          }\n        }" { (if_statement "if (bVar9 != 0x4c) {\n            return false;\n          }" if (parenthesized_expression "(bVar9 != 0x4c)" ( (binary_expression "bVar9 != 0x4c" identifier != number_literal) )) (compound_statement "{\n            return false;\n          }" { (return_statement "return false;" return false ;) })) (if_statement "if ((int)pcieend - (int)pbVar11 < 1) {\n            return false;\n          }" if (parenthesized_expression "((int)pcieend - (int)pbVar11 < 1)" ( (binary_expression "(int)pcieend - (int)pbVar11 < 1" (binary_expression "(int)pcieend - (int)pbVar11" (cast_expression "(int)pcieend" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal) )) (compound_statement "{\n            return false;\n          }" { (return_statement "return false;" return false ;) })) }) (else_clause "else {\n          if (bVar9 != 0x52) {\n            if (bVar9 != 0x53) {\n              return false;\n            }\n            goto LAB_002210d9;\n          }\n          if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n            return false;\n          }\n          local_94 = *pbVar11;\n          if (4 < (local_94 & 7)) {\n            return false;\n          }\n          if ((1 << (local_94 & 7) & 0x1dU) == 0) {\n            return false;\n          }\n        }" else (compound_statement "{\n          if (bVar9 != 0x52) {\n            if (bVar9 != 0x53) {\n              return false;\n            }\n            goto LAB_002210d9;\n          }\n          if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n            return false;\n          }\n          local_94 = *pbVar11;\n          if (4 < (local_94 & 7)) {\n            return false;\n          }\n          if ((1 << (local_94 & 7) & 0x1dU) == 0) {\n            return false;\n          }\n        }" { (if_statement "if (bVar9 != 0x52) {\n            if (bVar9 != 0x53) {\n              return false;\n            }\n            goto LAB_002210d9;\n          }" if (parenthesized_expression "(bVar9 != 0x52)" ( (binary_expression "bVar9 != 0x52" identifier != number_literal) )) (compound_statement "{\n            if (bVar9 != 0x53) {\n              return false;\n            }\n            goto LAB_002210d9;\n          }" { (if_statement "if (bVar9 != 0x53) {\n              return false;\n            }" if (parenthesized_expression "(bVar9 != 0x53)" ( (binary_expression "bVar9 != 0x53" identifier != number_literal) )) (compound_statement "{\n              return false;\n            }" { (return_statement "return false;" return false ;) })) (goto_statement "goto LAB_002210d9;" goto statement_identifier ;) })) (if_statement "if (pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0) {\n            return false;\n          }" if (parenthesized_expression "(pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0)" ( (binary_expression "pcieend == pbVar11 || (int)pcieend - (int)pbVar11 < 0" (binary_expression "pcieend == pbVar11" identifier == identifier) || (binary_expression "(int)pcieend - (int)pbVar11 < 0" (binary_expression "(int)pcieend - (int)pbVar11" (cast_expression "(int)pcieend" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal)) )) (compound_statement "{\n            return false;\n          }" { (return_statement "return false;" return false ;) })) (expression_statement "local_94 = *pbVar11;" (assignment_expression "local_94 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;) (if_statement "if (4 < (local_94 & 7)) {\n            return false;\n          }" if (parenthesized_expression "(4 < (local_94 & 7))" ( (binary_expression "4 < (local_94 & 7)" number_literal < (parenthesized_expression "(local_94 & 7)" ( (binary_expression "local_94 & 7" identifier & number_literal) ))) )) (compound_statement "{\n            return false;\n          }" { (return_statement "return false;" return false ;) })) (if_statement "if ((1 << (local_94 & 7) & 0x1dU) == 0) {\n            return false;\n          }" if (parenthesized_expression "((1 << (local_94 & 7) & 0x1dU) == 0)" ( (binary_expression "(1 << (local_94 & 7) & 0x1dU) == 0" (parenthesized_expression "(1 << (local_94 & 7) & 0x1dU)" ( (binary_expression "1 << (local_94 & 7) & 0x1dU" (binary_expression "1 << (local_94 & 7)" number_literal << (parenthesized_expression "(local_94 & 7)" ( (binary_expression "local_94 & 7" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n            return false;\n          }" { (return_statement "return false;" return false ;) })) }))) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) }))) (labeled_statement "LAB_002210d9:\n      __s = __s + 1;" statement_identifier : (expression_statement "__s = __s + 1;" (assignment_expression "__s = __s + 1" identifier = (binary_expression "__s + 1" identifier + number_literal)) ;)) (expression_statement "bVar9 = *__s;" (assignment_expression "bVar9 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) }) while (parenthesized_expression "(bVar9 != 0)" ( (binary_expression "bVar9 != 0" identifier != number_literal) )) ;) (if_statement "if (local_9c == (pair<int,_gold::Cie*> *)0xffffffff) goto LAB_002214ac;" if (parenthesized_expression "(local_9c == (pair<int,_gold::Cie*> *)0xffffffff)" ( (binary_expression "local_9c == (pair<int,_gold::Cie*> *)0xffffffff)" identifier == (parenthesized_expression "(pair<int,_gold::Cie*> *)0xffffffff)" ( (ERROR "pair<int,_gold::" (comma_expression "pair<int,_gold" (binary_expression "pair<int" identifier < identifier) , identifier) : :) (binary_expression "Cie*> *)0xffffffff" identifier * (ERROR ">" >) (pointer_expression "*)0xffffffff" * (ERROR ")" )) number_literal)) ))) )) (goto_statement "goto LAB_002214ac;" goto statement_identifier ;)) (expression_statement "iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)(int)local_9c);" (comma_expression "iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)(int)local_9c)" (assignment_expression "iVar6 = Track_relocs<64" identifier = (binary_expression "Track_relocs<64" identifier < number_literal)) , (binary_expression "_false>::advance(relocs,(longlong)(int)local_9c)" identifier > (ERROR "::" : :) (call_expression "advance(relocs,(longlong)(int)local_9c)" identifier (argument_list "(relocs,(longlong)(int)local_9c)" ( identifier , (cast_expression "(longlong)(int)local_9c" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (if_statement "if (0 < iVar6) {\n      return false;\n    }" if (parenthesized_expression "(0 < iVar6)" ( (binary_expression "0 < iVar6" number_literal < identifier) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "oVar16 = Track_relocs<64,_false>::next_offset(relocs);" (comma_expression "oVar16 = Track_relocs<64,_false>::next_offset(relocs)" (assignment_expression "oVar16 = Track_relocs<64" identifier = (binary_expression "Track_relocs<64" identifier < number_literal)) , (binary_expression "_false>::next_offset(relocs)" identifier > (ERROR "::" : :) (call_expression "next_offset(relocs)" identifier (argument_list "(relocs)" ( identifier ))))) ;) (if_statement "if (oVar16 != (int)local_9c) {\n      return false;\n    }" if (parenthesized_expression "(oVar16 != (int)local_9c)" ( (binary_expression "oVar16 != (int)local_9c" identifier != (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "uVar7 = Track_relocs<64,_false>::next_symndx(relocs);" (comma_expression "uVar7 = Track_relocs<64,_false>::next_symndx(relocs)" (assignment_expression "uVar7 = Track_relocs<64" identifier = (binary_expression "Track_relocs<64" identifier < number_literal)) , (binary_expression "_false>::next_symndx(relocs)" identifier > (ERROR "::" : :) (call_expression "next_symndx(relocs)" identifier (argument_list "(relocs)" ( identifier ))))) ;) (if_statement "if (uVar7 == 0xffffffff) {\n      return false;\n    }" if (parenthesized_expression "(uVar7 == 0xffffffff)" ( (binary_expression "uVar7 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "uVar8 = (*(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x23])\n                      (object);" (assignment_expression "uVar8 = (*(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x23])\n                      (object)" identifier = (call_expression "(*(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x23])\n                      (object)" (parenthesized_expression "(*(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x23])" ( (pointer_expression "*(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x23]" * (subscript_expression "(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x23]" (field_expression "(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object" (field_expression "(object->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(object->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(object->super_Sized_relobj<64,_false>)" ( (comma_expression "object->super_Sized_relobj<64,_false" (binary_expression "object->super_Sized_relobj<64" (field_expression "object->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) )) (argument_list "(object)" ( identifier )))) ;) (if_statement "if (uVar7 < uVar8) {\n      local_95 = '\0';\n      puVar12 = "";\n    }\n    else {\n      if (symbols_size / 0x18 <= uVar7) {\n        return false;\n      }\n      if (symbol_names_size <= *(uint *)(symbols + uVar7 * 0x18)) {\n        return false;\n      }\n      puVar12 = symbol_names + *(uint *)(symbols + uVar7 * 0x18);\n    }" if (parenthesized_expression "(uVar7 < uVar8)" ( (binary_expression "uVar7 < uVar8" identifier < identifier) )) (compound_statement "{\n      local_95 = '\0';\n      puVar12 = "";\n    }" { (expression_statement "local_95 = '\0';" (assignment_expression "local_95 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar12 = "";" (assignment_expression "puVar12 = """ identifier = (string_literal """" " ")) ;) }) (else_clause "else {\n      if (symbols_size / 0x18 <= uVar7) {\n        return false;\n      }\n      if (symbol_names_size <= *(uint *)(symbols + uVar7 * 0x18)) {\n        return false;\n      }\n      puVar12 = symbol_names + *(uint *)(symbols + uVar7 * 0x18);\n    }" else (compound_statement "{\n      if (symbols_size / 0x18 <= uVar7) {\n        return false;\n      }\n      if (symbol_names_size <= *(uint *)(symbols + uVar7 * 0x18)) {\n        return false;\n      }\n      puVar12 = symbol_names + *(uint *)(symbols + uVar7 * 0x18);\n    }" { (if_statement "if (symbols_size / 0x18 <= uVar7) {\n        return false;\n      }" if (parenthesized_expression "(symbols_size / 0x18 <= uVar7)" ( (binary_expression "symbols_size / 0x18 <= uVar7" (binary_expression "symbols_size / 0x18" identifier / number_literal) <= identifier) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if (symbol_names_size <= *(uint *)(symbols + uVar7 * 0x18)) {\n        return false;\n      }" if (parenthesized_expression "(symbol_names_size <= *(uint *)(symbols + uVar7 * 0x18))" ( (binary_expression "symbol_names_size <= *(uint *)(symbols + uVar7 * 0x18)" identifier <= (pointer_expression "*(uint *)(symbols + uVar7 * 0x18)" * (cast_expression "(uint *)(symbols + uVar7 * 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(symbols + uVar7 * 0x18)" ( (binary_expression "symbols + uVar7 * 0x18" identifier + (binary_expression "uVar7 * 0x18" identifier * number_literal)) ))))) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (expression_statement "puVar12 = symbol_names + *(uint *)(symbols + uVar7 * 0x18);" (assignment_expression "puVar12 = symbol_names + *(uint *)(symbols + uVar7 * 0x18)" identifier = (binary_expression "symbol_names + *(uint *)(symbols + uVar7 * 0x18)" identifier + (pointer_expression "*(uint *)(symbols + uVar7 * 0x18)" * (cast_expression "(uint *)(symbols + uVar7 * 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(symbols + uVar7 * 0x18)" ( (binary_expression "symbols + uVar7 * 0x18" identifier + (binary_expression "uVar7 * 0x18" identifier * number_literal)) )))))) ;) }))) (expression_statement "iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)((int)local_9c + 1));" (comma_expression "iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)((int)local_9c + 1))" (assignment_expression "iVar6 = Track_relocs<64" identifier = (binary_expression "Track_relocs<64" identifier < number_literal)) , (binary_expression "_false>::advance(relocs,(longlong)((int)local_9c + 1))" identifier > (ERROR "::" : :) (call_expression "advance(relocs,(longlong)((int)local_9c + 1))" identifier (argument_list "(relocs,(longlong)((int)local_9c + 1))" ( identifier , (call_expression "(longlong)((int)local_9c + 1)" (parenthesized_expression "(longlong)" ( identifier )) (argument_list "((int)local_9c + 1)" ( (binary_expression "(int)local_9c + 1" (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ))))) ;) (if_statement "if (iVar6 != 1) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x3af,"read_cie");\n    }" if (parenthesized_expression "(iVar6 != 1)" ( (binary_expression "iVar6 != 1" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/ehframe.cc",0x3af,"read_cie");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/ehframe.cc",0x3af,"read_cie");" (call_expression "do_gold_unreachable("../../gold/ehframe.cc",0x3af,"read_cie")" identifier (argument_list "("../../gold/ehframe.cc",0x3af,"read_cie")" ( (string_literal ""../../gold/ehframe.cc"" " string_content ") , number_literal , (string_literal ""read_cie"" " string_content ") ))) ;) })) }))) (expression_statement "iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)((int)pcieend - (int)pcontents));" (update_expression "iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)((int)pcieend - (int)pcontents))" (binary_expression "iVar6 = Track_relocs<64,_false>::advance(relocs,(longlong)((int)pcieend - (int)pcontents))" (assignment_expression "iVar6 = Track_relocs<64" identifier = (binary_expression "Track_relocs<64" identifier < number_literal)) (ERROR ",_false" , identifier) > (ERROR "::" : :) (call_expression "advance(relocs,(longlong)((int)pcieend - (int)pcontents))" identifier (argument_list "(relocs,(longlong)((int)pcieend - (int)pcontents))" ( identifier , (call_expression "(longlong)((int)pcieend - (int)pcontents)" (parenthesized_expression "(longlong)" ( identifier )) (argument_list "((int)pcieend - (int)pcontents)" ( (binary_expression "(int)pcieend - (int)pcontents" (cast_expression "(int)pcieend" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcontents" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) --) ;) (if_statement "if (0 < iVar6) {\n    return false;\n  }" if (parenthesized_expression "(0 < iVar6)" ( (binary_expression "0 < iVar6" number_literal < identifier) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "puVar10 = (uchar *)0xffffffff;" (assignment_expression "puVar10 = (uchar *)0xffffffff" identifier = (cast_expression "(uchar *)0xffffffff" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar6 = (int)(pcie + -8) - (int)pcontents;" (assignment_expression "iVar6 = (int)(pcie + -8) - (int)pcontents" identifier = (binary_expression "(int)(pcie + -8) - (int)pcontents" (cast_expression "(int)(pcie + -8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcie + -8)" ( (binary_expression "pcie + -8" identifier + number_literal) ))) - (cast_expression "(int)pcontents" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "cie.object_ = (Relobj *)object;" (assignment_expression "cie.object_ = (Relobj *)object" (field_expression "cie.object_" identifier . field_identifier) = (cast_expression "(Relobj *)object" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "cie.shndx_ = shndx;" (assignment_expression "cie.shndx_ = shndx" (field_expression "cie.shndx_" identifier . field_identifier) = identifier) ;) (expression_statement "cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;" (assignment_expression "cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2" (field_expression "cie.personality_name_._M_dataplus._M_p" (field_expression "cie.personality_name_._M_dataplus" (field_expression "cie.personality_name_" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "(pointer)&cie.personality_name_.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "cie.personality_name_.field_2" (field_expression "cie.personality_name_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "puVar14 = puVar12;" (assignment_expression "puVar14 = puVar12" identifier = identifier) ;) (if_statement "if (puVar12 != (uchar *)0x0) {\n    do {\n      if (puVar10 == (uchar *)0x0) break;\n      puVar10 = puVar10 + -1;\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n    } while (uVar1 != '\0');\n    puVar10 = puVar12 + (~(uint)puVar10 - 1);\n  }" if (parenthesized_expression "(puVar12 != (uchar *)0x0)" ( (binary_expression "puVar12 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      if (puVar10 == (uchar *)0x0) break;\n      puVar10 = puVar10 + -1;\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n    } while (uVar1 != '\0');\n    puVar10 = puVar12 + (~(uint)puVar10 - 1);\n  }" { (do_statement "do {\n      if (puVar10 == (uchar *)0x0) break;\n      puVar10 = puVar10 + -1;\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n    } while (uVar1 != '\0');" do (compound_statement "{\n      if (puVar10 == (uchar *)0x0) break;\n      puVar10 = puVar10 + -1;\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + (uint)bVar15 * -2 + 1;\n    }" { (if_statement "if (puVar10 == (uchar *)0x0) break;" if (parenthesized_expression "(puVar10 == (uchar *)0x0)" ( (binary_expression "puVar10 == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "puVar10 = puVar10 + -1;" (assignment_expression "puVar10 = puVar10 + -1" identifier = (binary_expression "puVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar1 = *puVar14;" (assignment_expression "uVar1 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "puVar14 = puVar14 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar14 = puVar14 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "puVar14 + (uint)bVar15 * -2 + 1" (binary_expression "puVar14 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(uVar1 != '\0')" ( (binary_expression "uVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "puVar10 = puVar12 + (~(uint)puVar10 - 1);" (assignment_expression "puVar10 = puVar12 + (~(uint)puVar10 - 1)" identifier = (binary_expression "puVar12 + (~(uint)puVar10 - 1)" identifier + (parenthesized_expression "(~(uint)puVar10 - 1)" ( (binary_expression "~(uint)puVar10 - 1" (unary_expression "~(uint)puVar10" ~ (cast_expression "(uint)puVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal) )))) ;) })) (expression_statement "cie.input_offset_ = iVar6;" (assignment_expression "cie.input_offset_ = iVar6" (field_expression "cie.input_offset_" identifier . field_identifier) = identifier) ;) (expression_statement "cie.fde_encoding_ = local_94;" (assignment_expression "cie.fde_encoding_ = local_94" (field_expression "cie.fde_encoding_" identifier . field_identifier) = identifier) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.personality_name_,puVar12,puVar10,0);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&cie.personality_name_,puVar12,puVar10,0);" (binary_expression "_M_construct<char_const*>(&cie.personality_name_,puVar12,puVar10,0)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&cie.personality_name_,puVar12,puVar10,0)" ( (comma_expression "&cie.personality_name_,puVar12,puVar10,0" (pointer_expression "&cie.personality_name_" & (field_expression "cie.personality_name_" identifier . field_identifier)) , (comma_expression "puVar12,puVar10,0" identifier , (comma_expression "puVar10,0" identifier , number_literal))) ))) ;)) (expression_statement "cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2;" (assignment_expression "cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2" (field_expression "cie.contents_._M_dataplus._M_p" (field_expression "cie.contents_._M_dataplus" (field_expression "cie.contents_" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "(pointer)&cie.contents_.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "cie.contents_.field_2" (field_expression "cie.contents_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0;" (assignment_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std" (binary_expression "cie.fdes_.super__Vector_base<gold" (field_expression "cie.fdes_.super__Vector_base" (field_expression "cie.fdes_" identifier . field_identifier) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0;" (assignment_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std" (binary_expression "cie.fdes_.super__Vector_base<gold" (field_expression "cie.fdes_.super__Vector_base" (field_expression "cie.fdes_" identifier . field_identifier) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =\n       (pointer)0x0;" (assignment_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =\n       (pointer)0x0" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std" (binary_expression "cie.fdes_.super__Vector_base<gold" (field_expression "cie.fdes_.super__Vector_base" (field_expression "cie.fdes_" identifier . field_identifier) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.contents_,pcie,pcieend,0);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&cie.contents_,pcie,pcieend,0);" (binary_expression "_M_construct<char_const*>(&cie.contents_,pcie,pcieend,0)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&cie.contents_,pcie,pcieend,0)" ( (comma_expression "&cie.contents_,pcie,pcieend,0" (pointer_expression "&cie.contents_" & (field_expression "cie.contents_" identifier . field_identifier)) , (comma_expression "pcie,pcieend,0" identifier , (comma_expression "pcieend,0" identifier , number_literal))) ))) ;)) (if_statement "if (local_95 != '\0') {\n    local_70._0_4_ = &cie;\n    std::\n    _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n    ::find(&(this->cie_offsets_)._M_t,(Cie **)&local_70);\n    if ((_Rb_tree_header *)local_80 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {\n      ppVar2 = (new_cies->\n               super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n               )._M_impl._M_finish;\n      for (ppVar13 = (new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n                     )._M_impl._M_start; ppVar13 != ppVar2; ppVar13 = ppVar13 + 1) {\n        cie1 = ppVar13->first;\n        bVar4 = operator==(cie1,&cie);\n        if (bVar4) goto LAB_002212f4;\n      }\n    }\n    else {\n      cie1 = *(Cie **)(local_80 + 0x10);\nLAB_002212f4:\n      if (cie1 != (Cie *)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        Relobj::add_merge_mapping\n                  ((Relobj *)object,&this->super_Output_section_data,shndx,iVar6,\n                   (int)pcieend - (int)(pcie + -8),-1);\n        goto LAB_0022131f;\n      }\n    }\n  }" if (parenthesized_expression "(local_95 != '\0')" ( (binary_expression "local_95 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_70._0_4_ = &cie;\n    std::\n    _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n    ::find(&(this->cie_offsets_)._M_t,(Cie **)&local_70);\n    if ((_Rb_tree_header *)local_80 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {\n      ppVar2 = (new_cies->\n               super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n               )._M_impl._M_finish;\n      for (ppVar13 = (new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n                     )._M_impl._M_start; ppVar13 != ppVar2; ppVar13 = ppVar13 + 1) {\n        cie1 = ppVar13->first;\n        bVar4 = operator==(cie1,&cie);\n        if (bVar4) goto LAB_002212f4;\n      }\n    }\n    else {\n      cie1 = *(Cie **)(local_80 + 0x10);\nLAB_002212f4:\n      if (cie1 != (Cie *)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        Relobj::add_merge_mapping\n                  ((Relobj *)object,&this->super_Output_section_data,shndx,iVar6,\n                   (int)pcieend - (int)(pcie + -8),-1);\n        goto LAB_0022131f;\n      }\n    }\n  }" { (expression_statement "local_70._0_4_ = &cie;" (assignment_expression "local_70._0_4_ = &cie" (field_expression "local_70._0_4_" identifier . field_identifier) = (pointer_expression "&cie" & identifier)) ;) (ERROR "std::\n    _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::" (comma_expression "std::\n    _Rb_tree<gold::Cie*,_gold" identifier (ERROR "::\n    _Rb_tree<gold::Cie*" : : (binary_expression "_Rb_tree<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "Cie*,_std" identifier * (ERROR "," ,) identifier) : : (binary_expression "_Identity<gold" identifier < identifier) : : (comma_expression "Cie*>,_gold" identifier (ERROR "*>" * >) , identifier) : :) (expression_statement "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n    ::find(&(this->cie_offsets_)._M_t,(Cie **)&local_70);" (binary_expression "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n    ::find(&(this->cie_offsets_)._M_t,(Cie **)&local_70)" (binary_expression "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_" identifier (ERROR "::Cie_less,_std::allocator<gold::Cie*" : : (comma_expression "Cie_less,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier *) > identifier) > (ERROR "::" : :) (call_expression "find(&(this->cie_offsets_)._M_t,(Cie **)&local_70)" identifier (argument_list "(&(this->cie_offsets_)._M_t,(Cie **)&local_70)" ( (pointer_expression "&(this->cie_offsets_)._M_t" & (field_expression "(this->cie_offsets_)._M_t" (parenthesized_expression "(this->cie_offsets_)" ( (field_expression "this->cie_offsets_" identifier -> field_identifier) )) . field_identifier)) , (cast_expression "(Cie **)&local_70" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_70" & identifier)) )))) ;) (if_statement "if ((_Rb_tree_header *)local_80 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {\n      ppVar2 = (new_cies->\n               super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n               )._M_impl._M_finish;\n      for (ppVar13 = (new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n                     )._M_impl._M_start; ppVar13 != ppVar2; ppVar13 = ppVar13 + 1) {\n        cie1 = ppVar13->first;\n        bVar4 = operator==(cie1,&cie);\n        if (bVar4) goto LAB_002212f4;\n      }\n    }\n    else {\n      cie1 = *(Cie **)(local_80 + 0x10);\nLAB_002212f4:\n      if (cie1 != (Cie *)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        Relobj::add_merge_mapping\n                  ((Relobj *)object,&this->super_Output_section_data,shndx,iVar6,\n                   (int)pcieend - (int)(pcie + -8),-1);\n        goto LAB_0022131f;\n      }\n    }" if (parenthesized_expression "((_Rb_tree_header *)local_80 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)" ( (binary_expression "(_Rb_tree_header *)local_80 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" (cast_expression "(_Rb_tree_header *)local_80" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == (pointer_expression "&(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->cie_offsets_)._M_t._M_impl" (field_expression "(this->cie_offsets_)._M_t" (parenthesized_expression "(this->cie_offsets_)" ( (field_expression "this->cie_offsets_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) )) (compound_statement "{\n      ppVar2 = (new_cies->\n               super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n               )._M_impl._M_finish;\n      for (ppVar13 = (new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n                     )._M_impl._M_start; ppVar13 != ppVar2; ppVar13 = ppVar13 + 1) {\n        cie1 = ppVar13->first;\n        bVar4 = operator==(cie1,&cie);\n        if (bVar4) goto LAB_002212f4;\n      }\n    }" { (expression_statement "ppVar2 = (new_cies->\n               super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n               )._M_impl._M_finish;" (assignment_expression "ppVar2 = (new_cies->\n               super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n               )._M_impl._M_finish" identifier = (field_expression "(new_cies->\n               super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n               )._M_impl._M_finish" (field_expression "(new_cies->\n               super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n               )._M_impl" (parenthesized_expression "(new_cies->\n               super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n               )" ( (ERROR "new_cies->\n               super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*," (comma_expression "new_cies->\n               super__Vector_base<std::pair<gold::Cie*,_bool>,_std" (binary_expression "new_cies->\n               super__Vector_base<std::pair<gold::Cie*" (binary_expression "new_cies->\n               super__Vector_base<std::pair<gold" (binary_expression "new_cies->\n               super__Vector_base<std" (field_expression "new_cies->\n               super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Cie" : : identifier) * identifier) , (binary_expression "_bool>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (type_descriptor "Cie*" type_identifier (abstract_pointer_declarator "*" *)) ,) (binary_expression "_bool>_>_>" (binary_expression "_bool>_>_" (binary_expression "_bool>_" identifier > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (for_statement "for (ppVar13 = (new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n                     )._M_impl._M_start; ppVar13 != ppVar2; ppVar13 = ppVar13 + 1) {\n        cie1 = ppVar13->first;\n        bVar4 = operator==(cie1,&cie);\n        if (bVar4) goto LAB_002212f4;\n      }" for ( (assignment_expression "ppVar13 = (new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n                     )._M_impl._M_start" identifier = (field_expression "(new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n                     )._M_impl._M_start" (field_expression "(new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n                     )._M_impl" (parenthesized_expression "(new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>\n                     )" ( (binary_expression "new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>" (binary_expression "new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_" (binary_expression "new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_" (binary_expression "new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool" (binary_expression "new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold" (binary_expression "new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std::allocator<std" (binary_expression "new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool>,_std" (binary_expression "new_cies->\n                     super__Vector_base<std::pair<gold::Cie*,_bool" (binary_expression "new_cies->\n                     super__Vector_base<std::pair<gold" (binary_expression "new_cies->\n                     super__Vector_base<std" (field_expression "new_cies->\n                     super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Cie" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Cie" : : identifier) * (ERROR "," ,) identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ; (binary_expression "ppVar13 != ppVar2" identifier != identifier) ; (assignment_expression "ppVar13 = ppVar13 + 1" identifier = (binary_expression "ppVar13 + 1" identifier + number_literal)) ) (compound_statement "{\n        cie1 = ppVar13->first;\n        bVar4 = operator==(cie1,&cie);\n        if (bVar4) goto LAB_002212f4;\n      }" { (expression_statement "cie1 = ppVar13->first;" (assignment_expression "cie1 = ppVar13->first" identifier = (field_expression "ppVar13->first" identifier -> field_identifier)) ;) (expression_statement "bVar4 = operator==(cie1,&cie);" (assignment_expression "bVar4 = operator==(cie1,&cie)" identifier = (binary_expression "operator==(cie1,&cie)" identifier == (parenthesized_expression "(cie1,&cie)" ( (comma_expression "cie1,&cie" identifier , (pointer_expression "&cie" & identifier)) )))) ;) (if_statement "if (bVar4) goto LAB_002212f4;" if (parenthesized_expression "(bVar4)" ( identifier )) (goto_statement "goto LAB_002212f4;" goto statement_identifier ;)) })) }) (else_clause "else {\n      cie1 = *(Cie **)(local_80 + 0x10);\nLAB_002212f4:\n      if (cie1 != (Cie *)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        Relobj::add_merge_mapping\n                  ((Relobj *)object,&this->super_Output_section_data,shndx,iVar6,\n                   (int)pcieend - (int)(pcie + -8),-1);\n        goto LAB_0022131f;\n      }\n    }" else (compound_statement "{\n      cie1 = *(Cie **)(local_80 + 0x10);\nLAB_002212f4:\n      if (cie1 != (Cie *)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        Relobj::add_merge_mapping\n                  ((Relobj *)object,&this->super_Output_section_data,shndx,iVar6,\n                   (int)pcieend - (int)(pcie + -8),-1);\n        goto LAB_0022131f;\n      }\n    }" { (expression_statement "cie1 = *(Cie **)(local_80 + 0x10);" (assignment_expression "cie1 = *(Cie **)(local_80 + 0x10)" identifier = (pointer_expression "*(Cie **)(local_80 + 0x10)" * (cast_expression "(Cie **)(local_80 + 0x10)" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_80 + 0x10)" ( (binary_expression "local_80 + 0x10" identifier + number_literal) ))))) ;) (labeled_statement "LAB_002212f4:\n      if (cie1 != (Cie *)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        Relobj::add_merge_mapping\n                  ((Relobj *)object,&this->super_Output_section_data,shndx,iVar6,\n                   (int)pcieend - (int)(pcie + -8),-1);\n        goto LAB_0022131f;\n      }" statement_identifier : (if_statement "if (cie1 != (Cie *)0x0) {\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        Relobj::add_merge_mapping\n                  ((Relobj *)object,&this->super_Output_section_data,shndx,iVar6,\n                   (int)pcieend - (int)(pcie + -8),-1);\n        goto LAB_0022131f;\n      }" if (parenthesized_expression "(cie1 != (Cie *)0x0)" ( (binary_expression "cie1 != (Cie *)0x0" identifier != (cast_expression "(Cie *)0x0" ( (type_descriptor "Cie *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */\n        Relobj::add_merge_mapping\n                  ((Relobj *)object,&this->super_Output_section_data,shndx,iVar6,\n                   (int)pcieend - (int)(pcie + -8),-1);\n        goto LAB_0022131f;\n      }" { comment (labeled_statement "Relobj::add_merge_mapping\n                  ((Relobj *)object,&this->super_Output_section_data,shndx,iVar6,\n                   (int)pcieend - (int)(pcie + -8),-1);" statement_identifier : (ERROR ":" :) (expression_statement "add_merge_mapping\n                  ((Relobj *)object,&this->super_Output_section_data,shndx,iVar6,\n                   (int)pcieend - (int)(pcie + -8),-1);" (call_expression "add_merge_mapping\n                  ((Relobj *)object,&this->super_Output_section_data,shndx,iVar6,\n                   (int)pcieend - (int)(pcie + -8),-1)" identifier (argument_list "((Relobj *)object,&this->super_Output_section_data,shndx,iVar6,\n                   (int)pcieend - (int)(pcie + -8),-1)" ( (cast_expression "(Relobj *)object" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&this->super_Output_section_data" & (field_expression "this->super_Output_section_data" identifier -> field_identifier)) , identifier , identifier , (binary_expression "(int)pcieend - (int)(pcie + -8)" (cast_expression "(int)pcieend" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)(pcie + -8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcie + -8)" ( (binary_expression "pcie + -8" identifier + number_literal) )))) , number_literal ))) ;)) (goto_statement "goto LAB_0022131f;" goto statement_identifier ;) }))) }))) })) (expression_statement "cie1 = (Cie *)operator_new(0x4c);" (assignment_expression "cie1 = (Cie *)operator_new(0x4c)" identifier = (cast_expression "(Cie *)operator_new(0x4c)" ( (type_descriptor "Cie *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x4c)" identifier (argument_list "(0x4c)" ( number_literal ))))) ;) comment (labeled_statement "Cie::Cie(cie1,&cie);" statement_identifier : (ERROR ":" :) (expression_statement "Cie(cie1,&cie);" (call_expression "Cie(cie1,&cie)" identifier (argument_list "(cie1,&cie)" ( identifier , (pointer_expression "&cie" & identifier) ))) ;)) (expression_statement "local_70._4_4_ = (Cie *)CONCAT31(local_70._5_3_,local_95);" (assignment_expression "local_70._4_4_ = (Cie *)CONCAT31(local_70._5_3_,local_95)" (field_expression "local_70._4_4_" identifier . field_identifier) = (cast_expression "(Cie *)CONCAT31(local_70._5_3_,local_95)" ( (type_descriptor "Cie *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31(local_70._5_3_,local_95)" identifier (argument_list "(local_70._5_3_,local_95)" ( (field_expression "local_70._5_3_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_70._0_4_ = cie1;" (assignment_expression "local_70._0_4_ = cie1" (field_expression "local_70._0_4_" identifier . field_identifier) = identifier) ;) comment (labeled_statement "std::vector<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>::\n  emplace_back<std::pair<gold::Cie*,_bool>_>(new_cies,(pair<gold::Cie*,_bool> *)&local_70);" statement_identifier (ERROR "::vector<std::pair<gold::Cie*,_bool>,_std::allocator<std::pair<gold::Cie*,_bool>_>_>::\n  emplace_back<std::pair<gold:" : : (binary_expression "vector<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Cie*,_bool>,_std" (binary_expression "Cie*,_bool" identifier * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Cie*,_bool>_>_" (binary_expression "Cie*,_bool>_" (binary_expression "Cie*,_bool" identifier * (ERROR "," ,) identifier) > identifier) > identifier) > : : (binary_expression "emplace_back<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) :) : (expression_statement "Cie*,_bool>_>(new_cies,(pair<gold::Cie*,_bool> *)&local_70);" (binary_expression "Cie*,_bool>_>(new_cies,(pair<gold::Cie*,_bool> *)&local_70)" (binary_expression "Cie*,_bool>_" (binary_expression "Cie*,_bool" identifier * (ERROR "," ,) identifier) > identifier) > (parenthesized_expression "(new_cies,(pair<gold::Cie*,_bool> *)&local_70)" ( (comma_expression "new_cies,(pair<gold::Cie*,_bool> *)&local_70" identifier , (binary_expression "(pair<gold::Cie*,_bool> *)&local_70" (parenthesized_expression "(pair<gold::Cie*,_bool> *)" ( (binary_expression "pair<gold::Cie*,_bool> *" (binary_expression "pair<gold::Cie*,_bool" (binary_expression "pair<gold" identifier < identifier) (ERROR "::Cie" : : identifier) * (ERROR "," ,) identifier) > (pointer_expression "*" * identifier)) )) & identifier)) ))) ;)) (labeled_statement "LAB_0022131f:\n  local_9c = (pair<int,_gold::Cie*> *)&local_70;" statement_identifier : (expression_statement "local_9c = (pair<int,_gold::Cie*> *)&local_70;" (assignment_expression "local_9c = (pair<int,_gold::Cie*> *)&local_70" identifier = (binary_expression "(pair<int,_gold::Cie*> *)&local_70" (parenthesized_expression "(pair<int,_gold::Cie*> *)" ( (ERROR "pair<int,_gold::" (comma_expression "pair<int,_gold" (binary_expression "pair<int" identifier < identifier) , identifier) : :) (binary_expression "Cie*> *" (binary_expression "Cie*" identifier * identifier) > (pointer_expression "*" * identifier)) )) & identifier)) ;)) (expression_statement "local_70._0_4_ = (Cie *)(pcie + -(int)pcontents);" (assignment_expression "local_70._0_4_ = (Cie *)(pcie + -(int)pcontents)" (field_expression "local_70._0_4_" identifier . field_identifier) = (cast_expression "(Cie *)(pcie + -(int)pcontents)" ( (type_descriptor "Cie *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcie + -(int)pcontents)" ( (binary_expression "pcie + -(int)pcontents" identifier + (unary_expression "-(int)pcontents" - (cast_expression "(int)pcontents" ( (type_descriptor "int" primitive_type) ) identifier))) )))) ;) (expression_statement "__in_chrg = local_8c;" (assignment_expression "__in_chrg = local_8c" identifier = identifier) ;) (expression_statement "local_70._4_4_ = cie1;" (assignment_expression "local_70._4_4_ = cie1" (field_expression "local_70._4_4_" identifier . field_identifier) = identifier) ;) (expression_statement "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>_>\n  ::_M_emplace_unique<std::pair<int,_gold::Cie*>_>(&cies->_M_t,local_9c);" (update_expression "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>_>\n  ::_M_emplace_unique<std::pair<int,_gold::Cie*>_>(&cies->_M_t,local_9c)" (binary_expression "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>_>\n  ::_M_emplace_unique<std::pair<int,_gold::Cie*>_>(&cies->_M_t,local_9c)" (binary_expression "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>_>\n  ::_M_emplace_unique<std::pair<int,_gold::Cie*>_" (binary_expression "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>_>\n  ::_M_emplace_unique<std::pair<int" (binary_expression "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>_>\n  ::_M_emplace_unique<std" (binary_expression "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>_>\n  ::_M_emplace_unique" (binary_expression "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>_" (binary_expression "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int_const,_gold::Cie*>_" (binary_expression "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int_const" (binary_expression "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int>,_std::allocator<std" (binary_expression "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int>,_std" (binary_expression "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std::less<long_long_unsigned_int" (binary_expression "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_>,_std" (binary_expression "std::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*>_" identifier (ERROR "::\n  _Rb_tree<long_long_unsigned_int,_std::pair<long_long_unsigned_int_const,_gold::Cie*>,_std::_Select1st<std::pair<long_long_unsigned_int_const,_gold::Cie*" : : (comma_expression "_Rb_tree<long_long_unsigned_int,_std" (binary_expression "_Rb_tree<long_long_unsigned_int" identifier < identifier) , identifier) : : (comma_expression "pair<long_long_unsigned_int_const,_gold" (binary_expression "pair<long_long_unsigned_int_const" identifier < identifier) , identifier) : : (comma_expression "Cie*>,_std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "_Select1st<std" identifier < identifier) : : (comma_expression "pair<long_long_unsigned_int_const,_gold" (binary_expression "pair<long_long_unsigned_int_const" identifier < identifier) , identifier) : : identifier *) > identifier) > (ERROR "," ,) identifier) (ERROR "::less" : : identifier) < identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR ",_gold::Cie" , identifier : : identifier) * (ERROR ">" >) identifier) > identifier) > (ERROR "::" : :) identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR ",_gold::Cie" , identifier : : identifier) * (ERROR ">" >) identifier) > (parenthesized_expression "(&cies->_M_t,local_9c)" ( (comma_expression "&cies->_M_t,local_9c" (pointer_expression "&cies->_M_t" & (field_expression "cies->_M_t" identifier -> field_identifier)) , identifier) ))) --) ;) (labeled_statement "Cie::~Cie(&cie,(int)__in_chrg);" statement_identifier : (ERROR ":" :) (expression_statement "~Cie(&cie,(int)__in_chrg);" (unary_expression "~Cie(&cie,(int)__in_chrg)" ~ (call_expression "Cie(&cie,(int)__in_chrg)" identifier (argument_list "(&cie,(int)__in_chrg)" ( (pointer_expression "&cie" & identifier) , (cast_expression "(int)__in_chrg" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;)) (return_statement "return true;" return true ;) (ERROR "}" }))
(translation_unit "undefined4\nFUN_00220f60(int param_1,int *param_2,undefined4 param_3,int param_4,uint param_5,int param_6,\n            uint param_7,int param_8,byte *param_9,byte *param_10,undefined4 param_11,\n            undefined4 param_12,undefined4 *param_13)\n\n{\n  int *piVar1;\n  int iVar2;\n  byte bVar3;\n  char cVar4;\n  void *pvVar5;\n  byte *pbVar6;\n  int iVar7;\n  int ***pppiVar8;\n  uint uVar9;\n  int **ppiVar10;\n  byte bVar11;\n  uint uVar12;\n  byte *pbVar13;\n  int iVar14;\n  int extraout_EDX;\n  int *piVar15;\n  int ****ppppiVar16;\n  byte *pbVar17;\n  int ***pppiVar18;\n  byte bVar19;\n  longlong lVar20;\n  int ***pppiStack_b0;\n  undefined1 auStack_ac [4];\n  int local_a8;\n  int ***local_a4;\n  int local_a0;\n  int ***local_9c;\n  char local_95;\n  int **local_94;\n  undefined **local_90;\n  undefined1 local_8c [12];\n  int local_80 [4];\n  int **local_70;\n  int **local_6c;\n  int *local_68;\n  undefined4 local_64;\n  int local_60;\n  undefined1 local_5c;\n  undefined1 *local_58 [2];\n  undefined1 local_50 [16];\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar19 = 0;\n  local_90 = &__DT_PLTGOT;\n  if (param_10 == param_9 || (int)param_10 - (int)param_9 < 0) {\n    return 0;\n  }\n  if ((*param_9 & 0xfd) != 1) {\n    return 0;\n  }\n  pbVar17 = param_9 + 1;\n  local_94._0_1_ = *param_9;\n  pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17);\n  if (pvVar5 == (void *)0x0) {\n    return 0;\n  }\n  pbVar13 = (byte *)((int)pvVar5 + 1);\n  local_95 = '\x01';\n  if ((param_9[1] == 0x65) && (param_9[2] == 0x68)) {\n    if (param_9[3] != 0) {\n      return 0;\n    }\n    if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }\n    pbVar13 = (byte *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    pbVar17 = param_9 + 3;\n  }\n  if (param_10 <= pbVar13) {\n    return 0;\n  }\n  while ((char)*pbVar13 < '\0') {\n    pbVar13 = pbVar13 + 1;\n    if (param_10 == pbVar13) {\n      return 0;\n    }\n  }\n  pbVar6 = pbVar13 + 1;\n  if (param_10 <= pbVar6) {\n    return 0;\n  }\n  bVar11 = pbVar13[1];\n  while ((char)bVar11 < '\0') {\n    pbVar6 = pbVar6 + 1;\n    if (param_10 == pbVar6) {\n      return 0;\n    }\n    bVar11 = *pbVar6;\n  }\n  pbVar13 = pbVar6 + 1;\n  if ((byte)local_94 == 1) {\n    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }\n    pbVar13 = pbVar6 + 2;\n  }\n  else {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }\n  local_94._0_1_ = *pbVar17;\n  if ((byte)local_94 == 0x7a) {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }\n    local_94._0_1_ = pbVar17[1];\n    pbVar13 = pbVar13 + 1;\n    if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);\n  }\n  else {\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }\n  pppiVar18 = (int ***)(param_10 + -param_8);\n  local_9c = pppiVar8;\n  iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f);\n  if (0 < iVar7) {\n    return 0;\n  }\n  local_5c = (byte)local_94;\n  pbVar17 = (byte *)0xffffffff;\n  local_a4 = (int ***)(param_9 + -8);\n  iVar7 = (int)local_a4 - param_8;\n  local_68 = param_2;\n  local_64 = param_3;\n  local_94 = (int **)local_50;\n  pppiVar8 = local_9c;\n  if (local_9c != (int ***)0x0) {\n    do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);\n    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));\n  }\n  pppiStack_b0 = (int ***)0x0;\n  local_60 = iVar7;\n  local_58[0] = (undefined1 *)local_94;\n  FUN_000a8880(local_58,local_9c,pbVar17);\n  local_34[0] = local_2c;\n  local_40 = 0;\n  pppiStack_b0 = (int ***)0x0;\n  local_3c = 0;\n  local_38 = 0;\n                    \n  FUN_000a8880(local_34,param_9,param_10);\n  local_94 = &local_68;\n  ppppiVar16 = (int ****)auStack_ac;\n  iVar2 = local_a8;\n  if (local_95 != '\0') {\n    local_9c = &local_70;\n    pppiStack_b0 = pppiVar18;\n    local_70 = local_94;\n    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);\n    iVar14 = param_1 + 0x34;\n    if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }\n  }\n  local_a8 = iVar2;\n  ppppiVar16[-4] = (int ***)0x4c;\n  ppppiVar16[-5] = (int ***)0x2214cd;\n  ppiVar10 = (int **)FUN_00246670();\n  ppppiVar16[-3] = (int ***)local_94;\n  ppppiVar16[-4] = (int ***)ppiVar10;\n                    \n  ppppiVar16[-5] = (int ***)0x2214dd;\n  FUN_0021dba0();\n  local_6c = (int **)CONCAT31(local_6c._1_3_,local_95);\n  local_9c = &local_70;\n  ppppiVar16[-3] = local_9c;\n  ppppiVar16[-4] = (int ***)param_13;\n                    \n  ppppiVar16[-5] = (int ***)0x2214fe;\n  local_70 = ppiVar10;\n  FUN_0021fa00();\nLAB_0022131f:\n  local_70 = (int **)(param_9 + -param_8);\n  *(int ****)((int)ppppiVar16 + -8) = local_9c;\n  *(undefined4 *)((int)ppppiVar16 + -0xc) = param_12;\n  *(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c;\n  *(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343;\n  local_6c = ppiVar10;\n  FUN_0021ef70();\n  *(int ***)((int)ppppiVar16 + -0x14) = local_94;\n  *(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e;\n  FUN_0021a270();\n  return 1;\n}\n\n" (function_definition "undefined4\nFUN_00220f60(int param_1,int *param_2,undefined4 param_3,int param_4,uint param_5,int param_6,\n            uint param_7,int param_8,byte *param_9,byte *param_10,undefined4 param_11,\n            undefined4 param_12,undefined4 *param_13)\n\n{\n  int *piVar1;\n  int iVar2;\n  byte bVar3;\n  char cVar4;\n  void *pvVar5;\n  byte *pbVar6;\n  int iVar7;\n  int ***pppiVar8;\n  uint uVar9;\n  int **ppiVar10;\n  byte bVar11;\n  uint uVar12;\n  byte *pbVar13;\n  int iVar14;\n  int extraout_EDX;\n  int *piVar15;\n  int ****ppppiVar16;\n  byte *pbVar17;\n  int ***pppiVar18;\n  byte bVar19;\n  longlong lVar20;\n  int ***pppiStack_b0;\n  undefined1 auStack_ac [4];\n  int local_a8;\n  int ***local_a4;\n  int local_a0;\n  int ***local_9c;\n  char local_95;\n  int **local_94;\n  undefined **local_90;\n  undefined1 local_8c [12];\n  int local_80 [4];\n  int **local_70;\n  int **local_6c;\n  int *local_68;\n  undefined4 local_64;\n  int local_60;\n  undefined1 local_5c;\n  undefined1 *local_58 [2];\n  undefined1 local_50 [16];\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar19 = 0;\n  local_90 = &__DT_PLTGOT;\n  if (param_10 == param_9 || (int)param_10 - (int)param_9 < 0) {\n    return 0;\n  }\n  if ((*param_9 & 0xfd) != 1) {\n    return 0;\n  }\n  pbVar17 = param_9 + 1;\n  local_94._0_1_ = *param_9;\n  pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17);\n  if (pvVar5 == (void *)0x0) {\n    return 0;\n  }\n  pbVar13 = (byte *)((int)pvVar5 + 1);\n  local_95 = '\x01';\n  if ((param_9[1] == 0x65) && (param_9[2] == 0x68)) {\n    if (param_9[3] != 0) {\n      return 0;\n    }\n    if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }\n    pbVar13 = (byte *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    pbVar17 = param_9 + 3;\n  }\n  if (param_10 <= pbVar13) {\n    return 0;\n  }\n  while ((char)*pbVar13 < '\0') {\n    pbVar13 = pbVar13 + 1;\n    if (param_10 == pbVar13) {\n      return 0;\n    }\n  }\n  pbVar6 = pbVar13 + 1;\n  if (param_10 <= pbVar6) {\n    return 0;\n  }\n  bVar11 = pbVar13[1];\n  while ((char)bVar11 < '\0') {\n    pbVar6 = pbVar6 + 1;\n    if (param_10 == pbVar6) {\n      return 0;\n    }\n    bVar11 = *pbVar6;\n  }\n  pbVar13 = pbVar6 + 1;\n  if ((byte)local_94 == 1) {\n    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }\n    pbVar13 = pbVar6 + 2;\n  }\n  else {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }\n  local_94._0_1_ = *pbVar17;\n  if ((byte)local_94 == 0x7a) {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }\n    local_94._0_1_ = pbVar17[1];\n    pbVar13 = pbVar13 + 1;\n    if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);\n  }\n  else {\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }\n  pppiVar18 = (int ***)(param_10 + -param_8);\n  local_9c = pppiVar8;\n  iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f);\n  if (0 < iVar7) {\n    return 0;\n  }\n  local_5c = (byte)local_94;\n  pbVar17 = (byte *)0xffffffff;\n  local_a4 = (int ***)(param_9 + -8);\n  iVar7 = (int)local_a4 - param_8;\n  local_68 = param_2;\n  local_64 = param_3;\n  local_94 = (int **)local_50;\n  pppiVar8 = local_9c;\n  if (local_9c != (int ***)0x0) {\n    do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);\n    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));\n  }\n  pppiStack_b0 = (int ***)0x0;\n  local_60 = iVar7;\n  local_58[0] = (undefined1 *)local_94;\n  FUN_000a8880(local_58,local_9c,pbVar17);\n  local_34[0] = local_2c;\n  local_40 = 0;\n  pppiStack_b0 = (int ***)0x0;\n  local_3c = 0;\n  local_38 = 0;\n                    \n  FUN_000a8880(local_34,param_9,param_10);\n  local_94 = &local_68;\n  ppppiVar16 = (int ****)auStack_ac;\n  iVar2 = local_a8;\n  if (local_95 != '\0') {\n    local_9c = &local_70;\n    pppiStack_b0 = pppiVar18;\n    local_70 = local_94;\n    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);\n    iVar14 = param_1 + 0x34;\n    if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }\n  }\n  local_a8 = iVar2;\n  ppppiVar16[-4] = (int ***)0x4c;\n  ppppiVar16[-5] = (int ***)0x2214cd;\n  ppiVar10 = (int **)FUN_00246670();\n  ppppiVar16[-3] = (int ***)local_94;\n  ppppiVar16[-4] = (int ***)ppiVar10;\n                    \n  ppppiVar16[-5] = (int ***)0x2214dd;\n  FUN_0021dba0();\n  local_6c = (int **)CONCAT31(local_6c._1_3_,local_95);\n  local_9c = &local_70;\n  ppppiVar16[-3] = local_9c;\n  ppppiVar16[-4] = (int ***)param_13;\n                    \n  ppppiVar16[-5] = (int ***)0x2214fe;\n  local_70 = ppiVar10;\n  FUN_0021fa00();\nLAB_0022131f:\n  local_70 = (int **)(param_9 + -param_8);\n  *(int ****)((int)ppppiVar16 + -8) = local_9c;\n  *(undefined4 *)((int)ppppiVar16 + -0xc) = param_12;\n  *(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c;\n  *(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343;\n  local_6c = ppiVar10;\n  FUN_0021ef70();\n  *(int ***)((int)ppppiVar16 + -0x14) = local_94;\n  *(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e;\n  FUN_0021a270();\n  return 1;\n}" type_identifier (function_declarator "FUN_00220f60(int param_1,int *param_2,undefined4 param_3,int param_4,uint param_5,int param_6,\n            uint param_7,int param_8,byte *param_9,byte *param_10,undefined4 param_11,\n            undefined4 param_12,undefined4 *param_13)" identifier (parameter_list "(int param_1,int *param_2,undefined4 param_3,int param_4,uint param_5,int param_6,\n            uint param_7,int param_8,byte *param_9,byte *param_10,undefined4 param_11,\n            undefined4 param_12,undefined4 *param_13)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "uint param_7" type_identifier identifier) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "byte *param_9" type_identifier (pointer_declarator "*param_9" * identifier)) , (parameter_declaration "byte *param_10" type_identifier (pointer_declarator "*param_10" * identifier)) , (parameter_declaration "undefined4 param_11" type_identifier identifier) , (parameter_declaration "undefined4 param_12" type_identifier identifier) , (parameter_declaration "undefined4 *param_13" type_identifier (pointer_declarator "*param_13" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  byte bVar3;\n  char cVar4;\n  void *pvVar5;\n  byte *pbVar6;\n  int iVar7;\n  int ***pppiVar8;\n  uint uVar9;\n  int **ppiVar10;\n  byte bVar11;\n  uint uVar12;\n  byte *pbVar13;\n  int iVar14;\n  int extraout_EDX;\n  int *piVar15;\n  int ****ppppiVar16;\n  byte *pbVar17;\n  int ***pppiVar18;\n  byte bVar19;\n  longlong lVar20;\n  int ***pppiStack_b0;\n  undefined1 auStack_ac [4];\n  int local_a8;\n  int ***local_a4;\n  int local_a0;\n  int ***local_9c;\n  char local_95;\n  int **local_94;\n  undefined **local_90;\n  undefined1 local_8c [12];\n  int local_80 [4];\n  int **local_70;\n  int **local_6c;\n  int *local_68;\n  undefined4 local_64;\n  int local_60;\n  undefined1 local_5c;\n  undefined1 *local_58 [2];\n  undefined1 local_50 [16];\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar19 = 0;\n  local_90 = &__DT_PLTGOT;\n  if (param_10 == param_9 || (int)param_10 - (int)param_9 < 0) {\n    return 0;\n  }\n  if ((*param_9 & 0xfd) != 1) {\n    return 0;\n  }\n  pbVar17 = param_9 + 1;\n  local_94._0_1_ = *param_9;\n  pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17);\n  if (pvVar5 == (void *)0x0) {\n    return 0;\n  }\n  pbVar13 = (byte *)((int)pvVar5 + 1);\n  local_95 = '\x01';\n  if ((param_9[1] == 0x65) && (param_9[2] == 0x68)) {\n    if (param_9[3] != 0) {\n      return 0;\n    }\n    if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }\n    pbVar13 = (byte *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    pbVar17 = param_9 + 3;\n  }\n  if (param_10 <= pbVar13) {\n    return 0;\n  }\n  while ((char)*pbVar13 < '\0') {\n    pbVar13 = pbVar13 + 1;\n    if (param_10 == pbVar13) {\n      return 0;\n    }\n  }\n  pbVar6 = pbVar13 + 1;\n  if (param_10 <= pbVar6) {\n    return 0;\n  }\n  bVar11 = pbVar13[1];\n  while ((char)bVar11 < '\0') {\n    pbVar6 = pbVar6 + 1;\n    if (param_10 == pbVar6) {\n      return 0;\n    }\n    bVar11 = *pbVar6;\n  }\n  pbVar13 = pbVar6 + 1;\n  if ((byte)local_94 == 1) {\n    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }\n    pbVar13 = pbVar6 + 2;\n  }\n  else {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }\n  local_94._0_1_ = *pbVar17;\n  if ((byte)local_94 == 0x7a) {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }\n    local_94._0_1_ = pbVar17[1];\n    pbVar13 = pbVar13 + 1;\n    if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);\n  }\n  else {\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }\n  pppiVar18 = (int ***)(param_10 + -param_8);\n  local_9c = pppiVar8;\n  iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f);\n  if (0 < iVar7) {\n    return 0;\n  }\n  local_5c = (byte)local_94;\n  pbVar17 = (byte *)0xffffffff;\n  local_a4 = (int ***)(param_9 + -8);\n  iVar7 = (int)local_a4 - param_8;\n  local_68 = param_2;\n  local_64 = param_3;\n  local_94 = (int **)local_50;\n  pppiVar8 = local_9c;\n  if (local_9c != (int ***)0x0) {\n    do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);\n    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));\n  }\n  pppiStack_b0 = (int ***)0x0;\n  local_60 = iVar7;\n  local_58[0] = (undefined1 *)local_94;\n  FUN_000a8880(local_58,local_9c,pbVar17);\n  local_34[0] = local_2c;\n  local_40 = 0;\n  pppiStack_b0 = (int ***)0x0;\n  local_3c = 0;\n  local_38 = 0;\n                    \n  FUN_000a8880(local_34,param_9,param_10);\n  local_94 = &local_68;\n  ppppiVar16 = (int ****)auStack_ac;\n  iVar2 = local_a8;\n  if (local_95 != '\0') {\n    local_9c = &local_70;\n    pppiStack_b0 = pppiVar18;\n    local_70 = local_94;\n    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);\n    iVar14 = param_1 + 0x34;\n    if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }\n  }\n  local_a8 = iVar2;\n  ppppiVar16[-4] = (int ***)0x4c;\n  ppppiVar16[-5] = (int ***)0x2214cd;\n  ppiVar10 = (int **)FUN_00246670();\n  ppppiVar16[-3] = (int ***)local_94;\n  ppppiVar16[-4] = (int ***)ppiVar10;\n                    \n  ppppiVar16[-5] = (int ***)0x2214dd;\n  FUN_0021dba0();\n  local_6c = (int **)CONCAT31(local_6c._1_3_,local_95);\n  local_9c = &local_70;\n  ppppiVar16[-3] = local_9c;\n  ppppiVar16[-4] = (int ***)param_13;\n                    \n  ppppiVar16[-5] = (int ***)0x2214fe;\n  local_70 = ppiVar10;\n  FUN_0021fa00();\nLAB_0022131f:\n  local_70 = (int **)(param_9 + -param_8);\n  *(int ****)((int)ppppiVar16 + -8) = local_9c;\n  *(undefined4 *)((int)ppppiVar16 + -0xc) = param_12;\n  *(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c;\n  *(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343;\n  local_6c = ppiVar10;\n  FUN_0021ef70();\n  *(int ***)((int)ppppiVar16 + -0x14) = local_94;\n  *(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e;\n  FUN_0021a270();\n  return 1;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "void *pvVar5;" primitive_type (pointer_declarator "*pvVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int ***pppiVar8;" primitive_type (pointer_declarator "***pppiVar8" * (pointer_declarator "**pppiVar8" * (pointer_declarator "*pppiVar8" * identifier))) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int **ppiVar10;" primitive_type (pointer_declarator "**ppiVar10" * (pointer_declarator "*ppiVar10" * identifier)) ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int ****ppppiVar16;" primitive_type (pointer_declarator "****ppppiVar16" * (pointer_declarator "***ppppiVar16" * (pointer_declarator "**ppppiVar16" * (pointer_declarator "*ppppiVar16" * identifier)))) ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "int ***pppiVar18;" primitive_type (pointer_declarator "***pppiVar18" * (pointer_declarator "**pppiVar18" * (pointer_declarator "*pppiVar18" * identifier))) ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "longlong lVar20;" type_identifier identifier ;) (declaration "int ***pppiStack_b0;" primitive_type (pointer_declarator "***pppiStack_b0" * (pointer_declarator "**pppiStack_b0" * (pointer_declarator "*pppiStack_b0" * identifier))) ;) (declaration "undefined1 auStack_ac [4];" type_identifier (array_declarator "auStack_ac [4]" identifier [ number_literal ]) ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "int ***local_a4;" primitive_type (pointer_declarator "***local_a4" * (pointer_declarator "**local_a4" * (pointer_declarator "*local_a4" * identifier))) ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "int ***local_9c;" primitive_type (pointer_declarator "***local_9c" * (pointer_declarator "**local_9c" * (pointer_declarator "*local_9c" * identifier))) ;) (declaration "char local_95;" primitive_type identifier ;) (declaration "int **local_94;" primitive_type (pointer_declarator "**local_94" * (pointer_declarator "*local_94" * identifier)) ;) (declaration "undefined **local_90;" type_identifier (pointer_declarator "**local_90" * (pointer_declarator "*local_90" * identifier)) ;) (declaration "undefined1 local_8c [12];" type_identifier (array_declarator "local_8c [12]" identifier [ number_literal ]) ;) (declaration "int local_80 [4];" primitive_type (array_declarator "local_80 [4]" identifier [ number_literal ]) ;) (declaration "int **local_70;" primitive_type (pointer_declarator "**local_70" * (pointer_declarator "*local_70" * identifier)) ;) (declaration "int **local_6c;" primitive_type (pointer_declarator "**local_6c" * (pointer_declarator "*local_6c" * identifier)) ;) (declaration "int *local_68;" primitive_type (pointer_declarator "*local_68" * identifier) ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "undefined1 local_5c;" type_identifier identifier ;) (declaration "undefined1 *local_58 [2];" type_identifier (pointer_declarator "*local_58 [2]" * (array_declarator "local_58 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_50 [16];" type_identifier (array_declarator "local_50 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined1 *local_34 [2];" type_identifier (pointer_declarator "*local_34 [2]" * (array_declarator "local_34 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "local_90 = &__DT_PLTGOT;" (assignment_expression "local_90 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (if_statement "if (param_10 == param_9 || (int)param_10 - (int)param_9 < 0) {\n    return 0;\n  }" if (parenthesized_expression "(param_10 == param_9 || (int)param_10 - (int)param_9 < 0)" ( (binary_expression "param_10 == param_9 || (int)param_10 - (int)param_9 < 0" (binary_expression "param_10 == param_9" identifier == identifier) || (binary_expression "(int)param_10 - (int)param_9 < 0" (binary_expression "(int)param_10 - (int)param_9" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_9" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((*param_9 & 0xfd) != 1) {\n    return 0;\n  }" if (parenthesized_expression "((*param_9 & 0xfd) != 1)" ( (binary_expression "(*param_9 & 0xfd) != 1" (parenthesized_expression "(*param_9 & 0xfd)" ( (binary_expression "*param_9 & 0xfd" (pointer_expression "*param_9" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar17 = param_9 + 1;" (assignment_expression "pbVar17 = param_9 + 1" identifier = (binary_expression "param_9 + 1" identifier + number_literal)) ;) (expression_statement "local_94._0_1_ = *param_9;" (assignment_expression "local_94._0_1_ = *param_9" (field_expression "local_94._0_1_" identifier . field_identifier) = (pointer_expression "*param_9" * identifier)) ;) (expression_statement "pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17);" (assignment_expression "pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17)" identifier = (call_expression "memchr(pbVar17,0,(int)param_10 - (int)pbVar17)" identifier (argument_list "(pbVar17,0,(int)param_10 - (int)pbVar17)" ( identifier , number_literal , (binary_expression "(int)param_10 - (int)pbVar17" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (pvVar5 == (void *)0x0) {\n    return 0;\n  }" if (parenthesized_expression "(pvVar5 == (void *)0x0)" ( (binary_expression "pvVar5 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar13 = (byte *)((int)pvVar5 + 1);" (assignment_expression "pbVar13 = (byte *)((int)pvVar5 + 1)" identifier = (cast_expression "(byte *)((int)pvVar5 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar5 + 1)" ( (binary_expression "(int)pvVar5 + 1" (cast_expression "(int)pvVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_95 = '\x01';" (assignment_expression "local_95 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if ((param_9[1] == 0x65) && (param_9[2] == 0x68)) {\n    if (param_9[3] != 0) {\n      return 0;\n    }\n    if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }\n    pbVar13 = (byte *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    pbVar17 = param_9 + 3;\n  }" if (parenthesized_expression "((param_9[1] == 0x65) && (param_9[2] == 0x68))" ( (binary_expression "(param_9[1] == 0x65) && (param_9[2] == 0x68)" (parenthesized_expression "(param_9[1] == 0x65)" ( (binary_expression "param_9[1] == 0x65" (subscript_expression "param_9[1]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(param_9[2] == 0x68)" ( (binary_expression "param_9[2] == 0x68" (subscript_expression "param_9[2]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    if (param_9[3] != 0) {\n      return 0;\n    }\n    if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }\n    pbVar13 = (byte *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    pbVar17 = param_9 + 3;\n  }" { (if_statement "if (param_9[3] != 0) {\n      return 0;\n    }" if (parenthesized_expression "(param_9[3] != 0)" ( (binary_expression "param_9[3] != 0" (subscript_expression "param_9[3]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }" if (parenthesized_expression "((int)param_10 - (int)pbVar13 < 8)" ( (binary_expression "(int)param_10 - (int)pbVar13 < 8" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar13 = (byte *)((int)pvVar5 + 9);" (assignment_expression "pbVar13 = (byte *)((int)pvVar5 + 9)" identifier = (cast_expression "(byte *)((int)pvVar5 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar5 + 9)" ( (binary_expression "(int)pvVar5 + 9" (cast_expression "(int)pvVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_95 = '\0';" (assignment_expression "local_95 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pbVar17 = param_9 + 3;" (assignment_expression "pbVar17 = param_9 + 3" identifier = (binary_expression "param_9 + 3" identifier + number_literal)) ;) })) (if_statement "if (param_10 <= pbVar13) {\n    return 0;\n  }" if (parenthesized_expression "(param_10 <= pbVar13)" ( (binary_expression "param_10 <= pbVar13" identifier <= identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (while_statement "while ((char)*pbVar13 < '\0') {\n    pbVar13 = pbVar13 + 1;\n    if (param_10 == pbVar13) {\n      return 0;\n    }\n  }" while (parenthesized_expression "((char)*pbVar13 < '\0')" ( (binary_expression "(char)*pbVar13 < '\0'" (cast_expression "(char)*pbVar13" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar13" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pbVar13 = pbVar13 + 1;\n    if (param_10 == pbVar13) {\n      return 0;\n    }\n  }" { (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if (param_10 == pbVar13) {\n      return 0;\n    }" if (parenthesized_expression "(param_10 == pbVar13)" ( (binary_expression "param_10 == pbVar13" identifier == identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "pbVar6 = pbVar13 + 1;" (assignment_expression "pbVar6 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if (param_10 <= pbVar6) {\n    return 0;\n  }" if (parenthesized_expression "(param_10 <= pbVar6)" ( (binary_expression "param_10 <= pbVar6" identifier <= identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar11 = pbVar13[1];" (assignment_expression "bVar11 = pbVar13[1]" identifier = (subscript_expression "pbVar13[1]" identifier [ number_literal ])) ;) (while_statement "while ((char)bVar11 < '\0') {\n    pbVar6 = pbVar6 + 1;\n    if (param_10 == pbVar6) {\n      return 0;\n    }\n    bVar11 = *pbVar6;\n  }" while (parenthesized_expression "((char)bVar11 < '\0')" ( (binary_expression "(char)bVar11 < '\0'" (cast_expression "(char)bVar11" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pbVar6 = pbVar6 + 1;\n    if (param_10 == pbVar6) {\n      return 0;\n    }\n    bVar11 = *pbVar6;\n  }" { (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if (param_10 == pbVar6) {\n      return 0;\n    }" if (parenthesized_expression "(param_10 == pbVar6)" ( (binary_expression "param_10 == pbVar6" identifier == identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar11 = *pbVar6;" (assignment_expression "bVar11 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) })) (expression_statement "pbVar13 = pbVar6 + 1;" (assignment_expression "pbVar13 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if ((byte)local_94 == 1) {\n    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }\n    pbVar13 = pbVar6 + 2;\n  }\n  else {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }" if (parenthesized_expression "((byte)local_94 == 1)" ( (binary_expression "(byte)local_94 == 1" (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier) == number_literal) )) (compound_statement "{\n    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }\n    pbVar13 = pbVar6 + 2;\n  }" { (if_statement "if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }" if (parenthesized_expression "(param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0)" ( (binary_expression "param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0" (binary_expression "param_10 == pbVar13" identifier == identifier) || (binary_expression "(int)param_10 - (int)pbVar13 < 0" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar13 = pbVar6 + 2;" (assignment_expression "pbVar13 = pbVar6 + 2" identifier = (binary_expression "pbVar6 + 2" identifier + number_literal)) ;) }) (else_clause "else {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }" else (compound_statement "{\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }" { (if_statement "if (param_10 <= pbVar13) {\n      return 0;\n    }" if (parenthesized_expression "(param_10 <= pbVar13)" ( (binary_expression "param_10 <= pbVar13" identifier <= identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar11 = pbVar6[1];" (assignment_expression "bVar11 = pbVar6[1]" identifier = (subscript_expression "pbVar6[1]" identifier [ number_literal ])) ;) (while_statement "while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }" while (parenthesized_expression "((char)bVar11 < '\0')" ( (binary_expression "(char)bVar11 < '\0'" (cast_expression "(char)bVar11" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }" { (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if (param_10 == pbVar13) {\n        return 0;\n      }" if (parenthesized_expression "(param_10 == pbVar13)" ( (binary_expression "param_10 == pbVar13" identifier == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar11 = *pbVar13;" (assignment_expression "bVar11 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) })) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }))) (expression_statement "local_94._0_1_ = *pbVar17;" (assignment_expression "local_94._0_1_ = *pbVar17" (field_expression "local_94._0_1_" identifier . field_identifier) = (pointer_expression "*pbVar17" * identifier)) ;) (if_statement "if ((byte)local_94 == 0x7a) {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }\n    local_94._0_1_ = pbVar17[1];\n    pbVar13 = pbVar13 + 1;\n    if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);\n  }\n  else {\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }" if (parenthesized_expression "((byte)local_94 == 0x7a)" ( (binary_expression "(byte)local_94 == 0x7a" (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier) == number_literal) )) (compound_statement "{\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }\n    local_94._0_1_ = pbVar17[1];\n    pbVar13 = pbVar13 + 1;\n    if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);\n  }" { (if_statement "if (param_10 <= pbVar13) {\n      return 0;\n    }" if (parenthesized_expression "(param_10 <= pbVar13)" ( (binary_expression "param_10 <= pbVar13" identifier <= identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (while_statement "while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }" while (parenthesized_expression "((char)*pbVar13 < '\0')" ( (binary_expression "(char)*pbVar13 < '\0'" (cast_expression "(char)*pbVar13" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar13" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }" { (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if (param_10 == pbVar13) {\n        return 0;\n      }" if (parenthesized_expression "(param_10 == pbVar13)" ( (binary_expression "param_10 == pbVar13" identifier == identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "local_94._0_1_ = pbVar17[1];" (assignment_expression "local_94._0_1_ = pbVar17[1]" (field_expression "local_94._0_1_" identifier . field_identifier) = (subscript_expression "pbVar17[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }" if (parenthesized_expression "((byte)local_94 != 0)" ( (binary_expression "(byte)local_94 != 0" (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier) != number_literal) )) (compound_statement "{\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }" { (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;) (expression_statement "bVar11 = (byte)local_94;" (assignment_expression "bVar11 = (byte)local_94" identifier = (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_002210a7;" goto statement_identifier ;) })) (labeled_statement "LAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);" statement_identifier : (expression_statement "pppiVar8 = (int ***)((int)local_90 + -0x102e4a);" (assignment_expression "pppiVar8 = (int ***)((int)local_90 + -0x102e4a)" identifier = (cast_expression "(int ***)((int)local_90 + -0x102e4a)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)local_90 + -0x102e4a)" ( (binary_expression "(int)local_90 + -0x102e4a" (cast_expression "(int)local_90" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) }) (else_clause "else {\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }" else (compound_statement "{\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }" { (expression_statement "bVar11 = (byte)local_94;" (assignment_expression "bVar11 = (byte)local_94" identifier = (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if ((byte)local_94 == 0) goto LAB_002214ac;" if (parenthesized_expression "((byte)local_94 == 0)" ( (binary_expression "(byte)local_94 == 0" (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier) == number_literal) )) (goto_statement "goto LAB_002214ac;" goto statement_identifier ;)) (labeled_statement "LAB_002210a7:\n    local_9c = (int ***)0xffffffff;" statement_identifier : (expression_statement "local_9c = (int ***)0xffffffff;" (assignment_expression "local_9c = (int ***)0xffffffff" identifier = (cast_expression "(int ***)0xffffffff" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) ;)) (expression_statement "local_94._0_1_ = 0;" (assignment_expression "local_94._0_1_ = 0" (field_expression "local_94._0_1_" identifier . field_identifier) = number_literal) ;) (do_statement "do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);" do (compound_statement "{\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    }" { (if_statement "if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }" if (parenthesized_expression "(bVar11 == 0x50)" ( (binary_expression "bVar11 == 0x50" identifier == number_literal) )) (compound_statement "{\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }" { (if_statement "if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }" if (parenthesized_expression "(param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0)" ( (binary_expression "param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0" (binary_expression "param_10 == pbVar13" identifier == identifier) || (binary_expression "(int)param_10 - (int)pbVar13 < 0" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal)) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar11 = *pbVar13;" (assignment_expression "bVar11 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (if_statement "if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }" if (parenthesized_expression "((bVar11 & 0x60) == 0x60)" ( (binary_expression "(bVar11 & 0x60) == 0x60" (parenthesized_expression "(bVar11 & 0x60)" ( (binary_expression "bVar11 & 0x60" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar3 = bVar11 & 7;" (assignment_expression "bVar3 = bVar11 & 7" identifier = (binary_expression "bVar11 & 7" identifier & number_literal)) ;) (if_statement "if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }" if (parenthesized_expression "(bVar3 == 2)" ( (binary_expression "bVar3 == 2" identifier == number_literal) )) (compound_statement "{\n          uVar9 = 2;\n        }" { (expression_statement "uVar9 = 2;" (assignment_expression "uVar9 = 2" identifier = number_literal) ;) }) (else_clause "else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }" else (compound_statement "{\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }" { (if_statement "if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }" if (parenthesized_expression "(bVar3 < 3)" ( (binary_expression "bVar3 < 3" identifier < number_literal) )) (compound_statement "{\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }" { (if_statement "if (bVar3 != 0) {\n              return 0;\n            }" if (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }" else (compound_statement "{\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }" { (if_statement "if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }" if (parenthesized_expression "(bVar3 == 3)" ( (binary_expression "bVar3 == 3" identifier == number_literal) )) (compound_statement "{\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }" { (expression_statement "uVar9 = 4;" (assignment_expression "uVar9 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_002213bf;" goto statement_identifier ;) })) (if_statement "if (bVar3 != 4) {\n              return 0;\n            }" if (parenthesized_expression "(bVar3 != 4)" ( (binary_expression "bVar3 != 4" identifier != number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "uVar9 = 8;" (assignment_expression "uVar9 = 8" identifier = number_literal) ;) }))) (labeled_statement "LAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;" statement_identifier : (expression_statement "uVar12 = (int)param_10 - (int)pbVar13;" (assignment_expression "uVar12 = (int)param_10 - (int)pbVar13" identifier = (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) (if_statement "if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }" if (parenthesized_expression "((bVar11 & 0xf0) == 0x50)" ( (binary_expression "(bVar11 & 0xf0) == 0x50" (parenthesized_expression "(bVar11 & 0xf0)" ( (binary_expression "bVar11 & 0xf0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }" { (if_statement "if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }" if (parenthesized_expression "(uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))))" ( (binary_expression "uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" identifier < (parenthesized_expression "(-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" ( (binary_expression "-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))" (unary_expression "-uVar9" - identifier) & (call_expression "(uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar13 + ((uVar9 - 1) - (int)param_9))" ( (binary_expression "pbVar13 + ((uVar9 - 1) - (int)param_9)" identifier + (parenthesized_expression "((uVar9 - 1) - (int)param_9)" ( (binary_expression "(uVar9 - 1) - (int)param_9" (parenthesized_expression "(uVar9 - 1)" ( (binary_expression "uVar9 - 1" identifier - number_literal) )) - (cast_expression "(int)param_9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));" (assignment_expression "pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" identifier = (binary_expression "pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" identifier + (parenthesized_expression "(-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" ( (binary_expression "-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))" (unary_expression "-uVar9" - identifier) & (call_expression "(uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar13 + ((uVar9 - 1) - (int)param_9))" ( (binary_expression "pbVar13 + ((uVar9 - 1) - (int)param_9)" identifier + (parenthesized_expression "((uVar9 - 1) - (int)param_9)" ( (binary_expression "(uVar9 - 1) - (int)param_9" (parenthesized_expression "(uVar9 - 1)" ( (binary_expression "uVar9 - 1" identifier - number_literal) )) - (cast_expression "(int)param_9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) )))) ;) (expression_statement "uVar12 = (int)param_10 - (int)pbVar13;" (assignment_expression "uVar12 = (int)param_10 - (int)pbVar13" identifier = (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "local_9c = (int ***)((int)pbVar13 - param_8);" (assignment_expression "local_9c = (int ***)((int)pbVar13 - param_8)" identifier = (cast_expression "(int ***)((int)pbVar13 - param_8)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pbVar13 - param_8)" ( (binary_expression "(int)pbVar13 - param_8" (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (if_statement "if (uVar12 < uVar9) {\n          return 0;\n        }" if (parenthesized_expression "(uVar12 < uVar9)" ( (binary_expression "uVar12 < uVar9" identifier < identifier) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar13 = pbVar13 + uVar9;" (assignment_expression "pbVar13 = pbVar13 + uVar9" identifier = (binary_expression "pbVar13 + uVar9" identifier + identifier)) ;) }) (else_clause "else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }" else (compound_statement "{\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }" { (if_statement "if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }" if (parenthesized_expression "(bVar11 < 0x51)" ( (binary_expression "bVar11 < 0x51" identifier < number_literal) )) (compound_statement "{\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }" { (if_statement "if (bVar11 != 0x4c) {\n            return 0;\n          }" if (parenthesized_expression "(bVar11 != 0x4c)" ( (binary_expression "bVar11 != 0x4c" identifier != number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }" if (parenthesized_expression "((int)param_10 - (int)pbVar13 < 1)" ( (binary_expression "(int)param_10 - (int)pbVar13 < 1" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }" else (compound_statement "{\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }" { (if_statement "if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }" if (parenthesized_expression "(bVar11 != 0x52)" ( (binary_expression "bVar11 != 0x52" identifier != number_literal) )) (compound_statement "{\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }" { (if_statement "if (bVar11 != 0x53) {\n              return 0;\n            }" if (parenthesized_expression "(bVar11 != 0x53)" ( (binary_expression "bVar11 != 0x53" identifier != number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_002210d9;" goto statement_identifier ;) })) (if_statement "if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }" if (parenthesized_expression "(param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0)" ( (binary_expression "param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0" (binary_expression "param_10 == pbVar13" identifier == identifier) || (binary_expression "(int)param_10 - (int)pbVar13 < 0" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal)) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "local_94._0_1_ = *pbVar13;" (assignment_expression "local_94._0_1_ = *pbVar13" (field_expression "local_94._0_1_" identifier . field_identifier) = (pointer_expression "*pbVar13" * identifier)) ;) (if_statement "if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }" if (parenthesized_expression "(4 < ((byte)local_94 & 7))" ( (binary_expression "4 < ((byte)local_94 & 7)" number_literal < (parenthesized_expression "((byte)local_94 & 7)" ( (binary_expression "(byte)local_94 & 7" (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }" if (parenthesized_expression "((1 << ((byte)local_94 & 7) & 0x1dU) == 0)" ( (binary_expression "(1 << ((byte)local_94 & 7) & 0x1dU) == 0" (parenthesized_expression "(1 << ((byte)local_94 & 7) & 0x1dU)" ( (binary_expression "1 << ((byte)local_94 & 7) & 0x1dU" (binary_expression "1 << ((byte)local_94 & 7)" number_literal << (parenthesized_expression "((byte)local_94 & 7)" ( (binary_expression "(byte)local_94 & 7" (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }))) (labeled_statement "LAB_002210d9:\n      pbVar17 = pbVar17 + 1;" statement_identifier : (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;)) (expression_statement "bVar11 = *pbVar17;" (assignment_expression "bVar11 = *pbVar17" identifier = (pointer_expression "*pbVar17" * identifier)) ;) }) while (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) ;) (if_statement "if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;" if (parenthesized_expression "(local_9c == (int ***)0xffffffff)" ( (binary_expression "local_9c == (int ***)0xffffffff" identifier == (cast_expression "(int ***)0xffffffff" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) )) (goto_statement "goto LAB_002214ac;" goto statement_identifier ;)) (expression_statement "local_a0 = (int)local_9c >> 0x1f;" (assignment_expression "local_a0 = (int)local_9c >> 0x1f" identifier = (binary_expression "(int)local_9c >> 0x1f" (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "local_a4 = local_9c;" (assignment_expression "local_a4 = local_9c" identifier = identifier) ;) (expression_statement "iVar7 = FUN_001b4510(param_11,local_9c,local_a0);" (assignment_expression "iVar7 = FUN_001b4510(param_11,local_9c,local_a0)" identifier = (call_expression "FUN_001b4510(param_11,local_9c,local_a0)" identifier (argument_list "(param_11,local_9c,local_a0)" ( identifier , identifier , identifier )))) ;) (if_statement "if (0 < iVar7) {\n      return 0;\n    }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "lVar20 = FUN_001b4420(param_11);" (assignment_expression "lVar20 = FUN_001b4420(param_11)" identifier = (call_expression "FUN_001b4420(param_11)" identifier (argument_list "(param_11)" ( identifier )))) ;) (if_statement "if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }" if (parenthesized_expression "(lVar20 != CONCAT44(local_a0,local_9c))" ( (binary_expression "lVar20 != CONCAT44(local_a0,local_9c)" identifier != (call_expression "CONCAT44(local_a0,local_9c)" identifier (argument_list "(local_a0,local_9c)" ( identifier , identifier )))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pppiStack_b0 = (int ***)FUN_001b4450(param_11);" (assignment_expression "pppiStack_b0 = (int ***)FUN_001b4450(param_11)" identifier = (cast_expression "(int ***)FUN_001b4450(param_11)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (call_expression "FUN_001b4450(param_11)" identifier (argument_list "(param_11)" ( identifier ))))) ;) (if_statement "if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }" if (parenthesized_expression "(pppiStack_b0 == (int ***)0xffffffff)" ( (binary_expression "pppiStack_b0 == (int ***)0xffffffff" identifier == (cast_expression "(int ***)0xffffffff" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);" (assignment_expression "pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2)" identifier = (cast_expression "(int ***)(**(code **)(*param_2 + 0x8c))(param_2)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (call_expression "(**(code **)(*param_2 + 0x8c))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x8c))" ( (pointer_expression "**(code **)(*param_2 + 0x8c)" * (pointer_expression "*(code **)(*param_2 + 0x8c)" * (cast_expression "(code **)(*param_2 + 0x8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x8c)" ( (binary_expression "*param_2 + 0x8c" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2)" ( identifier ))))) ;) (if_statement "if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }" if (parenthesized_expression "(pppiStack_b0 < pppiVar8)" ( (binary_expression "pppiStack_b0 < pppiVar8" identifier < identifier) )) (compound_statement "{\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }" { (expression_statement "local_95 = '\0';" (assignment_expression "local_95 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_a4 = (int ***)((int)local_90 + -0x102e4a);" (assignment_expression "local_a4 = (int ***)((int)local_90 + -0x102e4a)" identifier = (cast_expression "(int ***)((int)local_90 + -0x102e4a)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)local_90 + -0x102e4a)" ( (binary_expression "(int)local_90 + -0x102e4a" (cast_expression "(int)local_90" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }" else (compound_statement "{\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }" { (if_statement "if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }" if (parenthesized_expression "((int ***)(param_5 / 0x18) <= pppiStack_b0)" ( (binary_expression "(int ***)(param_5 / 0x18) <= pppiStack_b0" (cast_expression "(int ***)(param_5 / 0x18)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_5 / 0x18)" ( (binary_expression "param_5 / 0x18" identifier / number_literal) ))) <= identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);" (assignment_expression "pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18)" identifier = (cast_expression "(int ***)((int)pppiStack_b0 * 0x18)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppiStack_b0 * 0x18)" ( (binary_expression "(int)pppiStack_b0 * 0x18" (cast_expression "(int)pppiStack_b0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (if_statement "if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }" if (parenthesized_expression "(param_7 <= *(uint *)((int)pppiStack_b0 + param_4))" ( (binary_expression "param_7 <= *(uint *)((int)pppiStack_b0 + param_4)" identifier <= (pointer_expression "*(uint *)((int)pppiStack_b0 + param_4)" * (cast_expression "(uint *)((int)pppiStack_b0 + param_4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppiStack_b0 + param_4)" ( (binary_expression "(int)pppiStack_b0 + param_4" (cast_expression "(int)pppiStack_b0" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);" (assignment_expression "local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6)" identifier = (cast_expression "(int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(*(uint *)((int)pppiStack_b0 + param_4) + param_6)" ( (binary_expression "*(uint *)((int)pppiStack_b0 + param_4) + param_6" (pointer_expression "*(uint *)((int)pppiStack_b0 + param_4)" * (cast_expression "(uint *)((int)pppiStack_b0 + param_4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppiStack_b0 + param_4)" ( (binary_expression "(int)pppiStack_b0 + param_4" (cast_expression "(int)pppiStack_b0" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) + identifier) )))) ;) }))) (expression_statement "iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);" (assignment_expression "iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f)" identifier = (call_expression "FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f)" identifier (argument_list "(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f)" ( identifier , (binary_expression "(int)local_9c + 1" (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , (binary_expression "(int)local_9c + 1 >> 0x1f" (binary_expression "(int)local_9c + 1" (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) >> number_literal) )))) ;) (expression_statement "pppiVar8 = local_a4;" (assignment_expression "pppiVar8 = local_a4" identifier = identifier) ;) (if_statement "if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }" if (parenthesized_expression "(iVar7 != 1)" ( (binary_expression "iVar7 != 1" identifier != number_literal) )) (compound_statement "{\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }" { (expression_statement "pppiStack_b0 = (int ***)(uint)(byte)local_94;" (assignment_expression "pppiStack_b0 = (int ***)(uint)(byte)local_94" identifier = (cast_expression "(int ***)(uint)(byte)local_94" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (cast_expression "(uint)(byte)local_94" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier)))) ;) (expression_statement "FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);" (call_expression "FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969)" identifier (argument_list "((int)local_90 + -0x102679,0x3af,local_90 + -0x40969)" ( (binary_expression "(int)local_90 + -0x102679" (cast_expression "(int)local_90" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , number_literal , (binary_expression "local_90 + -0x40969" identifier + number_literal) ))) ;) })) }))) (expression_statement "pppiVar18 = (int ***)(param_10 + -param_8);" (assignment_expression "pppiVar18 = (int ***)(param_10 + -param_8)" identifier = (cast_expression "(int ***)(param_10 + -param_8)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_10 + -param_8)" ( (binary_expression "param_10 + -param_8" identifier + (unary_expression "-param_8" - identifier)) )))) ;) (expression_statement "local_9c = pppiVar8;" (assignment_expression "local_9c = pppiVar8" identifier = identifier) ;) (expression_statement "iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f);" (assignment_expression "iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f)" identifier = (call_expression "FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f)" identifier (argument_list "(param_11,pppiVar18,(int)pppiVar18 >> 0x1f)" ( identifier , identifier , (binary_expression "(int)pppiVar18 >> 0x1f" (cast_expression "(int)pppiVar18" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (if_statement "if (0 < iVar7) {\n    return 0;\n  }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "local_5c = (byte)local_94;" (assignment_expression "local_5c = (byte)local_94" identifier = (cast_expression "(byte)local_94" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)0xffffffff;" (assignment_expression "pbVar17 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_a4 = (int ***)(param_9 + -8);" (assignment_expression "local_a4 = (int ***)(param_9 + -8)" identifier = (cast_expression "(int ***)(param_9 + -8)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_9 + -8)" ( (binary_expression "param_9 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar7 = (int)local_a4 - param_8;" (assignment_expression "iVar7 = (int)local_a4 - param_8" identifier = (binary_expression "(int)local_a4 - param_8" (cast_expression "(int)local_a4" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "local_68 = param_2;" (assignment_expression "local_68 = param_2" identifier = identifier) ;) (expression_statement "local_64 = param_3;" (assignment_expression "local_64 = param_3" identifier = identifier) ;) (expression_statement "local_94 = (int **)local_50;" (assignment_expression "local_94 = (int **)local_50" identifier = (cast_expression "(int **)local_50" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "pppiVar8 = local_9c;" (assignment_expression "pppiVar8 = local_9c" identifier = identifier) ;) (if_statement "if (local_9c != (int ***)0x0) {\n    do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);\n    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));\n  }" if (parenthesized_expression "(local_9c != (int ***)0x0)" ( (binary_expression "local_9c != (int ***)0x0" identifier != (cast_expression "(int ***)0x0" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) )) (compound_statement "{\n    do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);\n    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));\n  }" { (do_statement "do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);" do (compound_statement "{\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    }" { (expression_statement "pppiVar18 = pppiVar8;" (assignment_expression "pppiVar18 = pppiVar8" identifier = identifier) ;) (if_statement "if (pbVar17 == (byte *)0x0) break;" if (parenthesized_expression "(pbVar17 == (byte *)0x0)" ( (binary_expression "pbVar17 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pbVar17 = pbVar17 + -1;" (assignment_expression "pbVar17 = pbVar17 + -1" identifier = (binary_expression "pbVar17 + -1" identifier + number_literal)) ;) (expression_statement "pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);" (assignment_expression "pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1)" identifier = (cast_expression "(int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)pppiVar8 + (uint)bVar19 * -2 + 1)" ( (binary_expression "(int)pppiVar8 + (uint)bVar19 * -2 + 1" (binary_expression "(int)pppiVar8 + (uint)bVar19 * -2" (cast_expression "(int)pppiVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "bVar11 = *(byte *)pppiVar8;" (assignment_expression "bVar11 = *(byte *)pppiVar8" identifier = (pointer_expression "*(byte *)pppiVar8" * (cast_expression "(byte *)pppiVar8" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pppiVar8 = pppiVar18;" (assignment_expression "pppiVar8 = pppiVar18" identifier = identifier) ;) }) while (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) ;) (expression_statement "pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));" (assignment_expression "pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1))" identifier = (cast_expression "(byte *)((int)local_9c + (~(uint)pbVar17 - 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_9c + (~(uint)pbVar17 - 1))" ( (binary_expression "(int)local_9c + (~(uint)pbVar17 - 1)" (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(~(uint)pbVar17 - 1)" ( (binary_expression "~(uint)pbVar17 - 1" (unary_expression "~(uint)pbVar17" ~ (cast_expression "(uint)pbVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal) ))) )))) ;) })) (expression_statement "pppiStack_b0 = (int ***)0x0;" (assignment_expression "pppiStack_b0 = (int ***)0x0" identifier = (cast_expression "(int ***)0x0" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) ;) (expression_statement "local_60 = iVar7;" (assignment_expression "local_60 = iVar7" identifier = identifier) ;) (expression_statement "local_58[0] = (undefined1 *)local_94;" (assignment_expression "local_58[0] = (undefined1 *)local_94" (subscript_expression "local_58[0]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)local_94" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "FUN_000a8880(local_58,local_9c,pbVar17);" (call_expression "FUN_000a8880(local_58,local_9c,pbVar17)" identifier (argument_list "(local_58,local_9c,pbVar17)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_34[0] = local_2c;" (assignment_expression "local_34[0] = local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "pppiStack_b0 = (int ***)0x0;" (assignment_expression "pppiStack_b0 = (int ***)0x0" identifier = (cast_expression "(int ***)0x0" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "FUN_000a8880(local_34,param_9,param_10);" (call_expression "FUN_000a8880(local_34,param_9,param_10)" identifier (argument_list "(local_34,param_9,param_10)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_94 = &local_68;" (assignment_expression "local_94 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (expression_statement "ppppiVar16 = (int ****)auStack_ac;" (assignment_expression "ppppiVar16 = (int ****)auStack_ac" identifier = (cast_expression "(int ****)auStack_ac" ( (type_descriptor "int ****" primitive_type (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))) ) identifier)) ;) (expression_statement "iVar2 = local_a8;" (assignment_expression "iVar2 = local_a8" identifier = identifier) ;) (if_statement "if (local_95 != '\0') {\n    local_9c = &local_70;\n    pppiStack_b0 = pppiVar18;\n    local_70 = local_94;\n    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);\n    iVar14 = param_1 + 0x34;\n    if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }\n  }" if (parenthesized_expression "(local_95 != '\0')" ( (binary_expression "local_95 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_9c = &local_70;\n    pppiStack_b0 = pppiVar18;\n    local_70 = local_94;\n    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);\n    iVar14 = param_1 + 0x34;\n    if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }\n  }" { (expression_statement "local_9c = &local_70;" (assignment_expression "local_9c = &local_70" identifier = (pointer_expression "&local_70" & identifier)) ;) (expression_statement "pppiStack_b0 = pppiVar18;" (assignment_expression "pppiStack_b0 = pppiVar18" identifier = identifier) ;) (expression_statement "local_70 = local_94;" (assignment_expression "local_70 = local_94" identifier = identifier) ;) (expression_statement "FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);" (call_expression "FUN_0021b4b0(local_80,param_1 + 0x30,local_9c)" identifier (argument_list "(local_80,param_1 + 0x30,local_9c)" ( identifier , (binary_expression "param_1 + 0x30" identifier + number_literal) , identifier ))) ;) (expression_statement "iVar14 = param_1 + 0x34;" (assignment_expression "iVar14 = param_1 + 0x34" identifier = (binary_expression "param_1 + 0x34" identifier + number_literal)) ;) (if_statement "if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }" if (parenthesized_expression "(local_80[0] == iVar14)" ( (binary_expression "local_80[0] == iVar14" (subscript_expression "local_80[0]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }" { (expression_statement "piVar1 = (int *)param_13[1];" (assignment_expression "piVar1 = (int *)param_13[1]" identifier = (cast_expression "(int *)param_13[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_13[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar2 = local_a8;" (assignment_expression "iVar2 = local_a8" identifier = identifier) ;) (for_statement "for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }" for ( (assignment_expression "piVar15 = (int *)*param_13" identifier = (cast_expression "(int *)*param_13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_13" * identifier))) ; (comma_expression "local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1" (assignment_expression "local_a8 = iVar7" identifier = identifier) , (comma_expression "ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1" (assignment_expression "ppppiVar16 = &pppiStack_b0" identifier = (pointer_expression "&pppiStack_b0" & identifier)) , (binary_expression "piVar15 != piVar1" identifier != identifier))) ; (assignment_expression "piVar15 = piVar15 + 2" identifier = (binary_expression "piVar15 + 2" identifier + number_literal)) ) (compound_statement "{\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }" { (expression_statement "ppiVar10 = (int **)*piVar15;" (assignment_expression "ppiVar10 = (int **)*piVar15" identifier = (cast_expression "(int **)*piVar15" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar15" * identifier))) ;) (expression_statement "cVar4 = FUN_0021a660(ppiVar10,local_94);" (assignment_expression "cVar4 = FUN_0021a660(ppiVar10,local_94)" identifier = (call_expression "FUN_0021a660(ppiVar10,local_94)" identifier (argument_list "(ppiVar10,local_94)" ( identifier , identifier )))) ;) (expression_statement "iVar14 = extraout_EDX;" (assignment_expression "iVar14 = extraout_EDX" identifier = identifier) ;) (expression_statement "iVar7 = local_a8;" (assignment_expression "iVar7 = local_a8" identifier = identifier) ;) (if_statement "if (cVar4 != '\0') goto LAB_002212f4;" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_002212f4;" goto statement_identifier ;)) (expression_statement "iVar2 = local_a8;" (assignment_expression "iVar2 = local_a8" identifier = identifier) ;) })) }) (else_clause "else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }" else (compound_statement "{\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }" { (expression_statement "ppiVar10 = *(int ***)(local_80[0] + 0x10);" (assignment_expression "ppiVar10 = *(int ***)(local_80[0] + 0x10)" identifier = (pointer_expression "*(int ***)(local_80[0] + 0x10)" * (cast_expression "(int ***)(local_80[0] + 0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(local_80[0] + 0x10)" ( (binary_expression "local_80[0] + 0x10" (subscript_expression "local_80[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (labeled_statement "LAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;" statement_identifier : (expression_statement "ppppiVar16 = &pppiStack_b0;" (assignment_expression "ppppiVar16 = &pppiStack_b0" identifier = (pointer_expression "&pppiStack_b0" & identifier)) ;)) (expression_statement "iVar2 = local_a8;" (assignment_expression "iVar2 = local_a8" identifier = identifier) ;) (if_statement "if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }" if (parenthesized_expression "(ppiVar10 != (int **)0x0)" ( (binary_expression "ppiVar10 != (int **)0x0" identifier != (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }" { (expression_statement "FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);" (call_expression "FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14)" identifier (argument_list "(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14)" ( identifier , identifier , identifier , identifier , (binary_expression "(int)param_10 - (int)local_a4" (cast_expression "(int)param_10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_a4" ( (type_descriptor "int" primitive_type) ) identifier)) , number_literal , identifier , identifier ))) ;) (expression_statement "ppppiVar16 = &pppiStack_b0;" (assignment_expression "ppppiVar16 = &pppiStack_b0" identifier = (pointer_expression "&pppiStack_b0" & identifier)) ;) (goto_statement "goto LAB_0022131f;" goto statement_identifier ;) })) }))) })) (expression_statement "local_a8 = iVar2;" (assignment_expression "local_a8 = iVar2" identifier = identifier) ;) (expression_statement "ppppiVar16[-4] = (int ***)0x4c;" (assignment_expression "ppppiVar16[-4] = (int ***)0x4c" (subscript_expression "ppppiVar16[-4]" identifier [ number_literal ]) = (cast_expression "(int ***)0x4c" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) ;) (expression_statement "ppppiVar16[-5] = (int ***)0x2214cd;" (assignment_expression "ppppiVar16[-5] = (int ***)0x2214cd" (subscript_expression "ppppiVar16[-5]" identifier [ number_literal ]) = (cast_expression "(int ***)0x2214cd" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) ;) (expression_statement "ppiVar10 = (int **)FUN_00246670();" (assignment_expression "ppiVar10 = (int **)FUN_00246670()" identifier = (cast_expression "(int **)FUN_00246670()" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "FUN_00246670()" identifier (argument_list "()" ( ))))) ;) (expression_statement "ppppiVar16[-3] = (int ***)local_94;" (assignment_expression "ppppiVar16[-3] = (int ***)local_94" (subscript_expression "ppppiVar16[-3]" identifier [ number_literal ]) = (cast_expression "(int ***)local_94" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (expression_statement "ppppiVar16[-4] = (int ***)ppiVar10;" (assignment_expression "ppppiVar16[-4] = (int ***)ppiVar10" (subscript_expression "ppppiVar16[-4]" identifier [ number_literal ]) = (cast_expression "(int ***)ppiVar10" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (expression_statement "ppppiVar16[-5] = (int ***)0x2214dd;" (assignment_expression "ppppiVar16[-5] = (int ***)0x2214dd" (subscript_expression "ppppiVar16[-5]" identifier [ number_literal ]) = (cast_expression "(int ***)0x2214dd" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) ;) (expression_statement "FUN_0021dba0();" (call_expression "FUN_0021dba0()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_6c = (int **)CONCAT31(local_6c._1_3_,local_95);" (assignment_expression "local_6c = (int **)CONCAT31(local_6c._1_3_,local_95)" identifier = (cast_expression "(int **)CONCAT31(local_6c._1_3_,local_95)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "CONCAT31(local_6c._1_3_,local_95)" identifier (argument_list "(local_6c._1_3_,local_95)" ( (field_expression "local_6c._1_3_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_9c = &local_70;" (assignment_expression "local_9c = &local_70" identifier = (pointer_expression "&local_70" & identifier)) ;) (expression_statement "ppppiVar16[-3] = local_9c;" (assignment_expression "ppppiVar16[-3] = local_9c" (subscript_expression "ppppiVar16[-3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "ppppiVar16[-4] = (int ***)param_13;" (assignment_expression "ppppiVar16[-4] = (int ***)param_13" (subscript_expression "ppppiVar16[-4]" identifier [ number_literal ]) = (cast_expression "(int ***)param_13" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) (expression_statement "ppppiVar16[-5] = (int ***)0x2214fe;" (assignment_expression "ppppiVar16[-5] = (int ***)0x2214fe" (subscript_expression "ppppiVar16[-5]" identifier [ number_literal ]) = (cast_expression "(int ***)0x2214fe" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) ;) (expression_statement "local_70 = ppiVar10;" (assignment_expression "local_70 = ppiVar10" identifier = identifier) ;) (expression_statement "FUN_0021fa00();" (call_expression "FUN_0021fa00()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0022131f:\n  local_70 = (int **)(param_9 + -param_8);" statement_identifier : (expression_statement "local_70 = (int **)(param_9 + -param_8);" (assignment_expression "local_70 = (int **)(param_9 + -param_8)" identifier = (cast_expression "(int **)(param_9 + -param_8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_9 + -param_8)" ( (binary_expression "param_9 + -param_8" identifier + (unary_expression "-param_8" - identifier)) )))) ;)) (expression_statement "*(int ****)((int)ppppiVar16 + -8) = local_9c;" (assignment_expression "*(int ****)((int)ppppiVar16 + -8) = local_9c" (pointer_expression "*(int ****)((int)ppppiVar16 + -8)" * (cast_expression "(int ****)((int)ppppiVar16 + -8)" ( (type_descriptor "int ****" primitive_type (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))) ) (parenthesized_expression "((int)ppppiVar16 + -8)" ( (binary_expression "(int)ppppiVar16 + -8" (cast_expression "(int)ppppiVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppppiVar16 + -0xc) = param_12;" (assignment_expression "*(undefined4 *)((int)ppppiVar16 + -0xc) = param_12" (pointer_expression "*(undefined4 *)((int)ppppiVar16 + -0xc)" * (cast_expression "(undefined4 *)((int)ppppiVar16 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppppiVar16 + -0xc)" ( (binary_expression "(int)ppppiVar16 + -0xc" (cast_expression "(int)ppppiVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c;" (assignment_expression "*(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c" (pointer_expression "*(undefined1 **)((int)ppppiVar16 + -0x10)" * (cast_expression "(undefined1 **)((int)ppppiVar16 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppppiVar16 + -0x10)" ( (binary_expression "(int)ppppiVar16 + -0x10" (cast_expression "(int)ppppiVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343;" (assignment_expression "*(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343" (pointer_expression "*(undefined4 *)((int)ppppiVar16 + -0x14)" * (cast_expression "(undefined4 *)((int)ppppiVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppppiVar16 + -0x14)" ( (binary_expression "(int)ppppiVar16 + -0x14" (cast_expression "(int)ppppiVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_6c = ppiVar10;" (assignment_expression "local_6c = ppiVar10" identifier = identifier) ;) (expression_statement "FUN_0021ef70();" (call_expression "FUN_0021ef70()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int ***)((int)ppppiVar16 + -0x14) = local_94;" (assignment_expression "*(int ***)((int)ppppiVar16 + -0x14) = local_94" (pointer_expression "*(int ***)((int)ppppiVar16 + -0x14)" * (cast_expression "(int ***)((int)ppppiVar16 + -0x14)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)ppppiVar16 + -0x14)" ( (binary_expression "(int)ppppiVar16 + -0x14" (cast_expression "(int)ppppiVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e;" (assignment_expression "*(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e" (pointer_expression "*(undefined4 *)((int)ppppiVar16 + -0x18)" * (cast_expression "(undefined4 *)((int)ppppiVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppppiVar16 + -0x18)" ( (binary_expression "(int)ppppiVar16 + -0x18" (cast_expression "(int)ppppiVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0021a270();" (call_expression "FUN_0021a270()" identifier (argument_list "()" ( ))) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT)))) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) || (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) < LIT)) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) < LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return LIT ;) })) (while_statement while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (while_statement while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) || (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) < LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (while_statement while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return LIT ;) })) (while_statement while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (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) ) IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) LIT)) ;)) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) || (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) < LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) }))) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (parenthesized_expression ( (binary_expression (unary_expression - IDENT) & (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )))) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (unary_expression - IDENT) & (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) < LIT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) || (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) < LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) & LIT) )) == LIT) )) (compound_statement { (return_statement return LIT ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (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 < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT / LIT) ))) <= IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) + IDENT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = 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 * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + (unary_expression - IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) - LIT) ))) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ; (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = (pointer_expression & IDENT)) , (binary_expression IDENT != IDENT))) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (goto_statement goto statement_identifier ;) })) }))) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (unary_expression - IDENT)) )))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return LIT ;) })))
(function_definition "undefined4\nFUN_00220f60(int param_1,int *param_2,undefined4 param_3,int param_4,uint param_5,int param_6,\n            uint param_7,int param_8,byte *param_9,byte *param_10,undefined4 param_11,\n            undefined4 param_12,undefined4 *param_13)\n\n{\n  int *piVar1;\n  int iVar2;\n  byte bVar3;\n  char cVar4;\n  void *pvVar5;\n  byte *pbVar6;\n  int iVar7;\n  int ***pppiVar8;\n  uint uVar9;\n  int **ppiVar10;\n  byte bVar11;\n  uint uVar12;\n  byte *pbVar13;\n  int iVar14;\n  int extraout_EDX;\n  int *piVar15;\n  int ****ppppiVar16;\n  byte *pbVar17;\n  int ***pppiVar18;\n  byte bVar19;\n  longlong lVar20;\n  int ***pppiStack_b0;\n  undefined1 auStack_ac [4];\n  int local_a8;\n  int ***local_a4;\n  int local_a0;\n  int ***local_9c;\n  char local_95;\n  int **local_94;\n  undefined **local_90;\n  undefined1 local_8c [12];\n  int local_80 [4];\n  int **local_70;\n  int **local_6c;\n  int *local_68;\n  undefined4 local_64;\n  int local_60;\n  undefined1 local_5c;\n  undefined1 *local_58 [2];\n  undefined1 local_50 [16];\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar19 = 0;\n  local_90 = &__DT_PLTGOT;\n  if (param_10 == param_9 || (int)param_10 - (int)param_9 < 0) {\n    return 0;\n  }\n  if ((*param_9 & 0xfd) != 1) {\n    return 0;\n  }\n  pbVar17 = param_9 + 1;\n  local_94._0_1_ = *param_9;\n  pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17);\n  if (pvVar5 == (void *)0x0) {\n    return 0;\n  }\n  pbVar13 = (byte *)((int)pvVar5 + 1);\n  local_95 = '\x01';\n  if ((param_9[1] == 0x65) && (param_9[2] == 0x68)) {\n    if (param_9[3] != 0) {\n      return 0;\n    }\n    if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }\n    pbVar13 = (byte *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    pbVar17 = param_9 + 3;\n  }\n  if (param_10 <= pbVar13) {\n    return 0;\n  }\n  while ((char)*pbVar13 < '\0') {\n    pbVar13 = pbVar13 + 1;\n    if (param_10 == pbVar13) {\n      return 0;\n    }\n  }\n  pbVar6 = pbVar13 + 1;\n  if (param_10 <= pbVar6) {\n    return 0;\n  }\n  bVar11 = pbVar13[1];\n  while ((char)bVar11 < '\0') {\n    pbVar6 = pbVar6 + 1;\n    if (param_10 == pbVar6) {\n      return 0;\n    }\n    bVar11 = *pbVar6;\n  }\n  pbVar13 = pbVar6 + 1;\n  if ((byte)local_94 == 1) {\n    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }\n    pbVar13 = pbVar6 + 2;\n  }\n  else {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }\n  local_94._0_1_ = *pbVar17;\n  if ((byte)local_94 == 0x7a) {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }\n    local_94._0_1_ = pbVar17[1];\n    pbVar13 = pbVar13 + 1;\n    if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);\n  }\n  else {\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }\n  pppiVar18 = (int ***)(param_10 + -param_8);\n  local_9c = pppiVar8;\n  iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f);\n  if (0 < iVar7) {\n    return 0;\n  }\n  local_5c = (byte)local_94;\n  pbVar17 = (byte *)0xffffffff;\n  local_a4 = (int ***)(param_9 + -8);\n  iVar7 = (int)local_a4 - param_8;\n  local_68 = param_2;\n  local_64 = param_3;\n  local_94 = (int **)local_50;\n  pppiVar8 = local_9c;\n  if (local_9c != (int ***)0x0) {\n    do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);\n    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));\n  }\n  pppiStack_b0 = (int ***)0x0;\n  local_60 = iVar7;\n  local_58[0] = (undefined1 *)local_94;\n  FUN_000a8880(local_58,local_9c,pbVar17);\n  local_34[0] = local_2c;\n  local_40 = 0;\n  pppiStack_b0 = (int ***)0x0;\n  local_3c = 0;\n  local_38 = 0;\n                    \n  FUN_000a8880(local_34,param_9,param_10);\n  local_94 = &local_68;\n  ppppiVar16 = (int ****)auStack_ac;\n  iVar2 = local_a8;\n  if (local_95 != '\0') {\n    local_9c = &local_70;\n    pppiStack_b0 = pppiVar18;\n    local_70 = local_94;\n    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);\n    iVar14 = param_1 + 0x34;\n    if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }\n  }\n  local_a8 = iVar2;\n  ppppiVar16[-4] = (int ***)0x4c;\n  ppppiVar16[-5] = (int ***)0x2214cd;\n  ppiVar10 = (int **)FUN_00246670();\n  ppppiVar16[-3] = (int ***)local_94;\n  ppppiVar16[-4] = (int ***)ppiVar10;\n                    \n  ppppiVar16[-5] = (int ***)0x2214dd;\n  FUN_0021dba0();\n  local_6c = (int **)CONCAT31(local_6c._1_3_,local_95);\n  local_9c = &local_70;\n  ppppiVar16[-3] = local_9c;\n  ppppiVar16[-4] = (int ***)param_13;\n                    \n  ppppiVar16[-5] = (int ***)0x2214fe;\n  local_70 = ppiVar10;\n  FUN_0021fa00();\nLAB_0022131f:\n  local_70 = (int **)(param_9 + -param_8);\n  *(int ****)((int)ppppiVar16 + -8) = local_9c;\n  *(undefined4 *)((int)ppppiVar16 + -0xc) = param_12;\n  *(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c;\n  *(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343;\n  local_6c = ppiVar10;\n  FUN_0021ef70();\n  *(int ***)((int)ppppiVar16 + -0x14) = local_94;\n  *(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e;\n  FUN_0021a270();\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "FUN_00220f60(int param_1,int *param_2,undefined4 param_3,int param_4,uint param_5,int param_6,\n            uint param_7,int param_8,byte *param_9,byte *param_10,undefined4 param_11,\n            undefined4 param_12,undefined4 *param_13)" (identifier "FUN_00220f60") (parameter_list "(int param_1,int *param_2,undefined4 param_3,int param_4,uint param_5,int param_6,\n            uint param_7,int param_8,byte *param_9,byte *param_10,undefined4 param_11,\n            undefined4 param_12,undefined4 *param_13)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "uint param_7" (type_identifier "uint") (identifier "param_7")) (, ",") (parameter_declaration "int param_8" (primitive_type "int") (identifier "param_8")) (, ",") (parameter_declaration "byte *param_9" (type_identifier "byte") (pointer_declarator "*param_9" (* "*") (identifier "param_9"))) (, ",") (parameter_declaration "byte *param_10" (type_identifier "byte") (pointer_declarator "*param_10" (* "*") (identifier "param_10"))) (, ",") (parameter_declaration "undefined4 param_11" (type_identifier "undefined4") (identifier "param_11")) (, ",") (parameter_declaration "undefined4 param_12" (type_identifier "undefined4") (identifier "param_12")) (, ",") (parameter_declaration "undefined4 *param_13" (type_identifier "undefined4") (pointer_declarator "*param_13" (* "*") (identifier "param_13"))) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  byte bVar3;\n  char cVar4;\n  void *pvVar5;\n  byte *pbVar6;\n  int iVar7;\n  int ***pppiVar8;\n  uint uVar9;\n  int **ppiVar10;\n  byte bVar11;\n  uint uVar12;\n  byte *pbVar13;\n  int iVar14;\n  int extraout_EDX;\n  int *piVar15;\n  int ****ppppiVar16;\n  byte *pbVar17;\n  int ***pppiVar18;\n  byte bVar19;\n  longlong lVar20;\n  int ***pppiStack_b0;\n  undefined1 auStack_ac [4];\n  int local_a8;\n  int ***local_a4;\n  int local_a0;\n  int ***local_9c;\n  char local_95;\n  int **local_94;\n  undefined **local_90;\n  undefined1 local_8c [12];\n  int local_80 [4];\n  int **local_70;\n  int **local_6c;\n  int *local_68;\n  undefined4 local_64;\n  int local_60;\n  undefined1 local_5c;\n  undefined1 *local_58 [2];\n  undefined1 local_50 [16];\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  bVar19 = 0;\n  local_90 = &__DT_PLTGOT;\n  if (param_10 == param_9 || (int)param_10 - (int)param_9 < 0) {\n    return 0;\n  }\n  if ((*param_9 & 0xfd) != 1) {\n    return 0;\n  }\n  pbVar17 = param_9 + 1;\n  local_94._0_1_ = *param_9;\n  pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17);\n  if (pvVar5 == (void *)0x0) {\n    return 0;\n  }\n  pbVar13 = (byte *)((int)pvVar5 + 1);\n  local_95 = '\x01';\n  if ((param_9[1] == 0x65) && (param_9[2] == 0x68)) {\n    if (param_9[3] != 0) {\n      return 0;\n    }\n    if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }\n    pbVar13 = (byte *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    pbVar17 = param_9 + 3;\n  }\n  if (param_10 <= pbVar13) {\n    return 0;\n  }\n  while ((char)*pbVar13 < '\0') {\n    pbVar13 = pbVar13 + 1;\n    if (param_10 == pbVar13) {\n      return 0;\n    }\n  }\n  pbVar6 = pbVar13 + 1;\n  if (param_10 <= pbVar6) {\n    return 0;\n  }\n  bVar11 = pbVar13[1];\n  while ((char)bVar11 < '\0') {\n    pbVar6 = pbVar6 + 1;\n    if (param_10 == pbVar6) {\n      return 0;\n    }\n    bVar11 = *pbVar6;\n  }\n  pbVar13 = pbVar6 + 1;\n  if ((byte)local_94 == 1) {\n    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }\n    pbVar13 = pbVar6 + 2;\n  }\n  else {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }\n  local_94._0_1_ = *pbVar17;\n  if ((byte)local_94 == 0x7a) {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }\n    local_94._0_1_ = pbVar17[1];\n    pbVar13 = pbVar13 + 1;\n    if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);\n  }\n  else {\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }\n  pppiVar18 = (int ***)(param_10 + -param_8);\n  local_9c = pppiVar8;\n  iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f);\n  if (0 < iVar7) {\n    return 0;\n  }\n  local_5c = (byte)local_94;\n  pbVar17 = (byte *)0xffffffff;\n  local_a4 = (int ***)(param_9 + -8);\n  iVar7 = (int)local_a4 - param_8;\n  local_68 = param_2;\n  local_64 = param_3;\n  local_94 = (int **)local_50;\n  pppiVar8 = local_9c;\n  if (local_9c != (int ***)0x0) {\n    do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);\n    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));\n  }\n  pppiStack_b0 = (int ***)0x0;\n  local_60 = iVar7;\n  local_58[0] = (undefined1 *)local_94;\n  FUN_000a8880(local_58,local_9c,pbVar17);\n  local_34[0] = local_2c;\n  local_40 = 0;\n  pppiStack_b0 = (int ***)0x0;\n  local_3c = 0;\n  local_38 = 0;\n                    \n  FUN_000a8880(local_34,param_9,param_10);\n  local_94 = &local_68;\n  ppppiVar16 = (int ****)auStack_ac;\n  iVar2 = local_a8;\n  if (local_95 != '\0') {\n    local_9c = &local_70;\n    pppiStack_b0 = pppiVar18;\n    local_70 = local_94;\n    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);\n    iVar14 = param_1 + 0x34;\n    if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }\n  }\n  local_a8 = iVar2;\n  ppppiVar16[-4] = (int ***)0x4c;\n  ppppiVar16[-5] = (int ***)0x2214cd;\n  ppiVar10 = (int **)FUN_00246670();\n  ppppiVar16[-3] = (int ***)local_94;\n  ppppiVar16[-4] = (int ***)ppiVar10;\n                    \n  ppppiVar16[-5] = (int ***)0x2214dd;\n  FUN_0021dba0();\n  local_6c = (int **)CONCAT31(local_6c._1_3_,local_95);\n  local_9c = &local_70;\n  ppppiVar16[-3] = local_9c;\n  ppppiVar16[-4] = (int ***)param_13;\n                    \n  ppppiVar16[-5] = (int ***)0x2214fe;\n  local_70 = ppiVar10;\n  FUN_0021fa00();\nLAB_0022131f:\n  local_70 = (int **)(param_9 + -param_8);\n  *(int ****)((int)ppppiVar16 + -8) = local_9c;\n  *(undefined4 *)((int)ppppiVar16 + -0xc) = param_12;\n  *(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c;\n  *(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343;\n  local_6c = ppiVar10;\n  FUN_0021ef70();\n  *(int ***)((int)ppppiVar16 + -0x14) = local_94;\n  *(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e;\n  FUN_0021a270();\n  return 1;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "void *pvVar5;" (primitive_type "void") (pointer_declarator "*pvVar5" (* "*") (identifier "pvVar5")) (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int ***pppiVar8;" (primitive_type "int") (pointer_declarator "***pppiVar8" (* "*") (pointer_declarator "**pppiVar8" (* "*") (pointer_declarator "*pppiVar8" (* "*") (identifier "pppiVar8")))) (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int **ppiVar10;" (primitive_type "int") (pointer_declarator "**ppiVar10" (* "*") (pointer_declarator "*ppiVar10" (* "*") (identifier "ppiVar10"))) (; ";")) (declaration "byte bVar11;" (type_identifier "byte") (identifier "bVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int extraout_EDX;" (primitive_type "int") (identifier "extraout_EDX") (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "int ****ppppiVar16;" (primitive_type "int") (pointer_declarator "****ppppiVar16" (* "*") (pointer_declarator "***ppppiVar16" (* "*") (pointer_declarator "**ppppiVar16" (* "*") (pointer_declarator "*ppppiVar16" (* "*") (identifier "ppppiVar16"))))) (; ";")) (declaration "byte *pbVar17;" (type_identifier "byte") (pointer_declarator "*pbVar17" (* "*") (identifier "pbVar17")) (; ";")) (declaration "int ***pppiVar18;" (primitive_type "int") (pointer_declarator "***pppiVar18" (* "*") (pointer_declarator "**pppiVar18" (* "*") (pointer_declarator "*pppiVar18" (* "*") (identifier "pppiVar18")))) (; ";")) (declaration "byte bVar19;" (type_identifier "byte") (identifier "bVar19") (; ";")) (declaration "longlong lVar20;" (type_identifier "longlong") (identifier "lVar20") (; ";")) (declaration "int ***pppiStack_b0;" (primitive_type "int") (pointer_declarator "***pppiStack_b0" (* "*") (pointer_declarator "**pppiStack_b0" (* "*") (pointer_declarator "*pppiStack_b0" (* "*") (identifier "pppiStack_b0")))) (; ";")) (declaration "undefined1 auStack_ac [4];" (type_identifier "undefined1") (array_declarator "auStack_ac [4]" (identifier "auStack_ac") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int local_a8;" (primitive_type "int") (identifier "local_a8") (; ";")) (declaration "int ***local_a4;" (primitive_type "int") (pointer_declarator "***local_a4" (* "*") (pointer_declarator "**local_a4" (* "*") (pointer_declarator "*local_a4" (* "*") (identifier "local_a4")))) (; ";")) (declaration "int local_a0;" (primitive_type "int") (identifier "local_a0") (; ";")) (declaration "int ***local_9c;" (primitive_type "int") (pointer_declarator "***local_9c" (* "*") (pointer_declarator "**local_9c" (* "*") (pointer_declarator "*local_9c" (* "*") (identifier "local_9c")))) (; ";")) (declaration "char local_95;" (primitive_type "char") (identifier "local_95") (; ";")) (declaration "int **local_94;" (primitive_type "int") (pointer_declarator "**local_94" (* "*") (pointer_declarator "*local_94" (* "*") (identifier "local_94"))) (; ";")) (declaration "undefined **local_90;" (type_identifier "undefined") (pointer_declarator "**local_90" (* "*") (pointer_declarator "*local_90" (* "*") (identifier "local_90"))) (; ";")) (declaration "undefined1 local_8c [12];" (type_identifier "undefined1") (array_declarator "local_8c [12]" (identifier "local_8c") ([ "[") (number_literal "12") (] "]")) (; ";")) (declaration "int local_80 [4];" (primitive_type "int") (array_declarator "local_80 [4]" (identifier "local_80") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int **local_70;" (primitive_type "int") (pointer_declarator "**local_70" (* "*") (pointer_declarator "*local_70" (* "*") (identifier "local_70"))) (; ";")) (declaration "int **local_6c;" (primitive_type "int") (pointer_declarator "**local_6c" (* "*") (pointer_declarator "*local_6c" (* "*") (identifier "local_6c"))) (; ";")) (declaration "int *local_68;" (primitive_type "int") (pointer_declarator "*local_68" (* "*") (identifier "local_68")) (; ";")) (declaration "undefined4 local_64;" (type_identifier "undefined4") (identifier "local_64") (; ";")) (declaration "int local_60;" (primitive_type "int") (identifier "local_60") (; ";")) (declaration "undefined1 local_5c;" (type_identifier "undefined1") (identifier "local_5c") (; ";")) (declaration "undefined1 *local_58 [2];" (type_identifier "undefined1") (pointer_declarator "*local_58 [2]" (* "*") (array_declarator "local_58 [2]" (identifier "local_58") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_50 [16];" (type_identifier "undefined1") (array_declarator "local_50 [16]" (identifier "local_50") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined4 local_40;" (type_identifier "undefined4") (identifier "local_40") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "undefined4 local_38;" (type_identifier "undefined4") (identifier "local_38") (; ";")) (declaration "undefined1 *local_34 [2];" (type_identifier "undefined1") (pointer_declarator "*local_34 [2]" (* "*") (array_declarator "local_34 [2]" (identifier "local_34") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_2c [28];" (type_identifier "undefined1") (array_declarator "local_2c [28]" (identifier "local_2c") ([ "[") (number_literal "28") (] "]")) (; ";")) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" (identifier "bVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_90 = &__DT_PLTGOT;" (assignment_expression "local_90 = &__DT_PLTGOT" (identifier "local_90") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (if_statement "if (param_10 == param_9 || (int)param_10 - (int)param_9 < 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_10 == param_9 || (int)param_10 - (int)param_9 < 0)" (( "(") (binary_expression "param_10 == param_9 || (int)param_10 - (int)param_9 < 0" (binary_expression "param_10 == param_9" (identifier "param_10") (== "==") (identifier "param_9")) (|| "||") (binary_expression "(int)param_10 - (int)param_9 < 0" (binary_expression "(int)param_10 - (int)param_9" (cast_expression "(int)param_10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_10")) (- "-") (cast_expression "(int)param_9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_9"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((*param_9 & 0xfd) != 1) {\n    return 0;\n  }" (if "if") (parenthesized_expression "((*param_9 & 0xfd) != 1)" (( "(") (binary_expression "(*param_9 & 0xfd) != 1" (parenthesized_expression "(*param_9 & 0xfd)" (( "(") (binary_expression "*param_9 & 0xfd" (pointer_expression "*param_9" (* "*") (identifier "param_9")) (& "&") (number_literal "0xfd")) () ")")) (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pbVar17 = param_9 + 1;" (assignment_expression "pbVar17 = param_9 + 1" (identifier "pbVar17") (= "=") (binary_expression "param_9 + 1" (identifier "param_9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_94._0_1_ = *param_9;" (assignment_expression "local_94._0_1_ = *param_9" (field_expression "local_94._0_1_" (identifier "local_94") (. ".") (field_identifier "_0_1_")) (= "=") (pointer_expression "*param_9" (* "*") (identifier "param_9"))) (; ";")) (expression_statement "pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17);" (assignment_expression "pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17)" (identifier "pvVar5") (= "=") (call_expression "memchr(pbVar17,0,(int)param_10 - (int)pbVar17)" (identifier "memchr") (argument_list "(pbVar17,0,(int)param_10 - (int)pbVar17)" (( "(") (identifier "pbVar17") (, ",") (number_literal "0") (, ",") (binary_expression "(int)param_10 - (int)pbVar17" (cast_expression "(int)param_10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_10")) (- "-") (cast_expression "(int)pbVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar17"))) () ")")))) (; ";")) (if_statement "if (pvVar5 == (void *)0x0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(pvVar5 == (void *)0x0)" (( "(") (binary_expression "pvVar5 == (void *)0x0" (identifier "pvVar5") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pbVar13 = (byte *)((int)pvVar5 + 1);" (assignment_expression "pbVar13 = (byte *)((int)pvVar5 + 1)" (identifier "pbVar13") (= "=") (cast_expression "(byte *)((int)pvVar5 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar5 + 1)" (( "(") (binary_expression "(int)pvVar5 + 1" (cast_expression "(int)pvVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "local_95 = '\x01';" (assignment_expression "local_95 = '\x01'" (identifier "local_95") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (if_statement "if ((param_9[1] == 0x65) && (param_9[2] == 0x68)) {\n    if (param_9[3] != 0) {\n      return 0;\n    }\n    if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }\n    pbVar13 = (byte *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    pbVar17 = param_9 + 3;\n  }" (if "if") (parenthesized_expression "((param_9[1] == 0x65) && (param_9[2] == 0x68))" (( "(") (binary_expression "(param_9[1] == 0x65) && (param_9[2] == 0x68)" (parenthesized_expression "(param_9[1] == 0x65)" (( "(") (binary_expression "param_9[1] == 0x65" (subscript_expression "param_9[1]" (identifier "param_9") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0x65")) () ")")) (&& "&&") (parenthesized_expression "(param_9[2] == 0x68)" (( "(") (binary_expression "param_9[2] == 0x68" (subscript_expression "param_9[2]" (identifier "param_9") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0x68")) () ")"))) () ")")) (compound_statement "{\n    if (param_9[3] != 0) {\n      return 0;\n    }\n    if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }\n    pbVar13 = (byte *)((int)pvVar5 + 9);\n    local_95 = '\0';\n    pbVar17 = param_9 + 3;\n  }" ({ "{") (if_statement "if (param_9[3] != 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_9[3] != 0)" (( "(") (binary_expression "param_9[3] != 0" (subscript_expression "param_9[3]" (identifier "param_9") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((int)param_10 - (int)pbVar13 < 8) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((int)param_10 - (int)pbVar13 < 8)" (( "(") (binary_expression "(int)param_10 - (int)pbVar13 < 8" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_10")) (- "-") (cast_expression "(int)pbVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar13"))) (< "<") (number_literal "8")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pbVar13 = (byte *)((int)pvVar5 + 9);" (assignment_expression "pbVar13 = (byte *)((int)pvVar5 + 9)" (identifier "pbVar13") (= "=") (cast_expression "(byte *)((int)pvVar5 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar5 + 9)" (( "(") (binary_expression "(int)pvVar5 + 9" (cast_expression "(int)pvVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar5")) (+ "+") (number_literal "9")) () ")")))) (; ";")) (expression_statement "local_95 = '\0';" (assignment_expression "local_95 = '\0'" (identifier "local_95") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pbVar17 = param_9 + 3;" (assignment_expression "pbVar17 = param_9 + 3" (identifier "pbVar17") (= "=") (binary_expression "param_9 + 3" (identifier "param_9") (+ "+") (number_literal "3"))) (; ";")) (} "}"))) (if_statement "if (param_10 <= pbVar13) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_10 <= pbVar13)" (( "(") (binary_expression "param_10 <= pbVar13" (identifier "param_10") (<= "<=") (identifier "pbVar13")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (while_statement "while ((char)*pbVar13 < '\0') {\n    pbVar13 = pbVar13 + 1;\n    if (param_10 == pbVar13) {\n      return 0;\n    }\n  }" (while "while") (parenthesized_expression "((char)*pbVar13 < '\0')" (( "(") (binary_expression "(char)*pbVar13 < '\0'" (cast_expression "(char)*pbVar13" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    pbVar13 = pbVar13 + 1;\n    if (param_10 == pbVar13) {\n      return 0;\n    }\n  }" ({ "{") (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (param_10 == pbVar13) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_10 == pbVar13)" (( "(") (binary_expression "param_10 == pbVar13" (identifier "param_10") (== "==") (identifier "pbVar13")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (expression_statement "pbVar6 = pbVar13 + 1;" (assignment_expression "pbVar6 = pbVar13 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (param_10 <= pbVar6) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_10 <= pbVar6)" (( "(") (binary_expression "param_10 <= pbVar6" (identifier "param_10") (<= "<=") (identifier "pbVar6")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar11 = pbVar13[1];" (assignment_expression "bVar11 = pbVar13[1]" (identifier "bVar11") (= "=") (subscript_expression "pbVar13[1]" (identifier "pbVar13") ([ "[") (number_literal "1") (] "]"))) (; ";")) (while_statement "while ((char)bVar11 < '\0') {\n    pbVar6 = pbVar6 + 1;\n    if (param_10 == pbVar6) {\n      return 0;\n    }\n    bVar11 = *pbVar6;\n  }" (while "while") (parenthesized_expression "((char)bVar11 < '\0')" (( "(") (binary_expression "(char)bVar11 < '\0'" (cast_expression "(char)bVar11" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar11")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    pbVar6 = pbVar6 + 1;\n    if (param_10 == pbVar6) {\n      return 0;\n    }\n    bVar11 = *pbVar6;\n  }" ({ "{") (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (param_10 == pbVar6) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_10 == pbVar6)" (( "(") (binary_expression "param_10 == pbVar6" (identifier "param_10") (== "==") (identifier "pbVar6")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar11 = *pbVar6;" (assignment_expression "bVar11 = *pbVar6" (identifier "bVar11") (= "=") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6"))) (; ";")) (} "}"))) (expression_statement "pbVar13 = pbVar6 + 1;" (assignment_expression "pbVar13 = pbVar6 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((byte)local_94 == 1) {\n    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }\n    pbVar13 = pbVar6 + 2;\n  }\n  else {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }" (if "if") (parenthesized_expression "((byte)local_94 == 1)" (( "(") (binary_expression "(byte)local_94 == 1" (cast_expression "(byte)local_94" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_94")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }\n    pbVar13 = pbVar6 + 2;\n  }" ({ "{") (if_statement "if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0)" (( "(") (binary_expression "param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0" (binary_expression "param_10 == pbVar13" (identifier "param_10") (== "==") (identifier "pbVar13")) (|| "||") (binary_expression "(int)param_10 - (int)pbVar13 < 0" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_10")) (- "-") (cast_expression "(int)pbVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar13"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pbVar13 = pbVar6 + 2;" (assignment_expression "pbVar13 = pbVar6 + 2" (identifier "pbVar13") (= "=") (binary_expression "pbVar6 + 2" (identifier "pbVar6") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (else_clause "else {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }" (else "else") (compound_statement "{\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    bVar11 = pbVar6[1];\n    while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }\n    pbVar13 = pbVar13 + 1;\n  }" ({ "{") (if_statement "if (param_10 <= pbVar13) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_10 <= pbVar13)" (( "(") (binary_expression "param_10 <= pbVar13" (identifier "param_10") (<= "<=") (identifier "pbVar13")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar11 = pbVar6[1];" (assignment_expression "bVar11 = pbVar6[1]" (identifier "bVar11") (= "=") (subscript_expression "pbVar6[1]" (identifier "pbVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (while_statement "while ((char)bVar11 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }" (while "while") (parenthesized_expression "((char)bVar11 < '\0')" (( "(") (binary_expression "(char)bVar11 < '\0'" (cast_expression "(char)bVar11" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar11")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n      bVar11 = *pbVar13;\n    }" ({ "{") (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (param_10 == pbVar13) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(param_10 == pbVar13)" (( "(") (binary_expression "param_10 == pbVar13" (identifier "param_10") (== "==") (identifier "pbVar13")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar11 = *pbVar13;" (assignment_expression "bVar11 = *pbVar13" (identifier "bVar11") (= "=") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13"))) (; ";")) (} "}"))) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "local_94._0_1_ = *pbVar17;" (assignment_expression "local_94._0_1_ = *pbVar17" (field_expression "local_94._0_1_" (identifier "local_94") (. ".") (field_identifier "_0_1_")) (= "=") (pointer_expression "*pbVar17" (* "*") (identifier "pbVar17"))) (; ";")) (if_statement "if ((byte)local_94 == 0x7a) {\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }\n    local_94._0_1_ = pbVar17[1];\n    pbVar13 = pbVar13 + 1;\n    if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);\n  }\n  else {\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }" (if "if") (parenthesized_expression "((byte)local_94 == 0x7a)" (( "(") (binary_expression "(byte)local_94 == 0x7a" (cast_expression "(byte)local_94" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_94")) (== "==") (number_literal "0x7a")) () ")")) (compound_statement "{\n    if (param_10 <= pbVar13) {\n      return 0;\n    }\n    while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }\n    local_94._0_1_ = pbVar17[1];\n    pbVar13 = pbVar13 + 1;\n    if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }\nLAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);\n  }" ({ "{") (if_statement "if (param_10 <= pbVar13) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_10 <= pbVar13)" (( "(") (binary_expression "param_10 <= pbVar13" (identifier "param_10") (<= "<=") (identifier "pbVar13")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (while_statement "while ((char)*pbVar13 < '\0') {\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }" (while "while") (parenthesized_expression "((char)*pbVar13 < '\0')" (( "(") (binary_expression "(char)*pbVar13 < '\0'" (cast_expression "(char)*pbVar13" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      pbVar13 = pbVar13 + 1;\n      if (param_10 == pbVar13) {\n        return 0;\n      }\n    }" ({ "{") (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (param_10 == pbVar13) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(param_10 == pbVar13)" (( "(") (binary_expression "param_10 == pbVar13" (identifier "param_10") (== "==") (identifier "pbVar13")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (expression_statement "local_94._0_1_ = pbVar17[1];" (assignment_expression "local_94._0_1_ = pbVar17[1]" (field_expression "local_94._0_1_" (identifier "local_94") (. ".") (field_identifier "_0_1_")) (= "=") (subscript_expression "pbVar17[1]" (identifier "pbVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((byte)local_94 != 0) {\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }" (if "if") (parenthesized_expression "((byte)local_94 != 0)" (( "(") (binary_expression "(byte)local_94 != 0" (cast_expression "(byte)local_94" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_94")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pbVar17 = pbVar17 + 1;\n      bVar11 = (byte)local_94;\n      goto LAB_002210a7;\n    }" ({ "{") (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" (identifier "pbVar17") (= "=") (binary_expression "pbVar17 + 1" (identifier "pbVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar11 = (byte)local_94;" (assignment_expression "bVar11 = (byte)local_94" (identifier "bVar11") (= "=") (cast_expression "(byte)local_94" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_94"))) (; ";")) (goto_statement "goto LAB_002210a7;" (goto "goto") (statement_identifier "LAB_002210a7") (; ";")) (} "}"))) (labeled_statement "LAB_002214ac:\n    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);" (statement_identifier "LAB_002214ac") (: ":") (expression_statement "pppiVar8 = (int ***)((int)local_90 + -0x102e4a);" (assignment_expression "pppiVar8 = (int ***)((int)local_90 + -0x102e4a)" (identifier "pppiVar8") (= "=") (cast_expression "(int ***)((int)local_90 + -0x102e4a)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)local_90 + -0x102e4a)" (( "(") (binary_expression "(int)local_90 + -0x102e4a" (cast_expression "(int)local_90" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_90")) (+ "+") (number_literal "-0x102e4a")) () ")")))) (; ";"))) (} "}")) (else_clause "else {\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }" (else "else") (compound_statement "{\n    bVar11 = (byte)local_94;\n    if ((byte)local_94 == 0) goto LAB_002214ac;\nLAB_002210a7:\n    local_9c = (int ***)0xffffffff;\n    local_94._0_1_ = 0;\n    do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);\n    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;\n    local_a0 = (int)local_9c >> 0x1f;\n    local_a4 = local_9c;\n    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);\n    if (0 < iVar7) {\n      return 0;\n    }\n    lVar20 = FUN_001b4420(param_11);\n    if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }\n    pppiStack_b0 = (int ***)FUN_001b4450(param_11);\n    if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }\n    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);\n    if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }\n    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);\n    pppiVar8 = local_a4;\n    if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }\n  }" ({ "{") (expression_statement "bVar11 = (byte)local_94;" (assignment_expression "bVar11 = (byte)local_94" (identifier "bVar11") (= "=") (cast_expression "(byte)local_94" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_94"))) (; ";")) (if_statement "if ((byte)local_94 == 0) goto LAB_002214ac;" (if "if") (parenthesized_expression "((byte)local_94 == 0)" (( "(") (binary_expression "(byte)local_94 == 0" (cast_expression "(byte)local_94" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_94")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002214ac;" (goto "goto") (statement_identifier "LAB_002214ac") (; ";"))) (labeled_statement "LAB_002210a7:\n    local_9c = (int ***)0xffffffff;" (statement_identifier "LAB_002210a7") (: ":") (expression_statement "local_9c = (int ***)0xffffffff;" (assignment_expression "local_9c = (int ***)0xffffffff" (identifier "local_9c") (= "=") (cast_expression "(int ***)0xffffffff" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (number_literal "0xffffffff"))) (; ";"))) (expression_statement "local_94._0_1_ = 0;" (assignment_expression "local_94._0_1_ = 0" (field_expression "local_94._0_1_" (identifier "local_94") (. ".") (field_identifier "_0_1_")) (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    } while (bVar11 != 0);" (do "do") (compound_statement "{\n      if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }\nLAB_002210d9:\n      pbVar17 = pbVar17 + 1;\n      bVar11 = *pbVar17;\n    }" ({ "{") (if_statement "if (bVar11 == 0x50) {\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }\n      else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }" (if "if") (parenthesized_expression "(bVar11 == 0x50)" (( "(") (binary_expression "bVar11 == 0x50" (identifier "bVar11") (== "==") (number_literal "0x50")) () ")")) (compound_statement "{\n        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + 1;\n        if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }\n        bVar3 = bVar11 & 7;\n        if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }\nLAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;\n        if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }\n        local_9c = (int ***)((int)pbVar13 - param_8);\n        if (uVar12 < uVar9) {\n          return 0;\n        }\n        pbVar13 = pbVar13 + uVar9;\n      }" ({ "{") (if_statement "if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0)" (( "(") (binary_expression "param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0" (binary_expression "param_10 == pbVar13" (identifier "param_10") (== "==") (identifier "pbVar13")) (|| "||") (binary_expression "(int)param_10 - (int)pbVar13 < 0" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_10")) (- "-") (cast_expression "(int)pbVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar13"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar11 = *pbVar13;" (assignment_expression "bVar11 = *pbVar13" (identifier "bVar11") (= "=") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((bVar11 & 0x60) == 0x60) {\n          return 0;\n        }" (if "if") (parenthesized_expression "((bVar11 & 0x60) == 0x60)" (( "(") (binary_expression "(bVar11 & 0x60) == 0x60" (parenthesized_expression "(bVar11 & 0x60)" (( "(") (binary_expression "bVar11 & 0x60" (identifier "bVar11") (& "&") (number_literal "0x60")) () ")")) (== "==") (number_literal "0x60")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar3 = bVar11 & 7;" (assignment_expression "bVar3 = bVar11 & 7" (identifier "bVar3") (= "=") (binary_expression "bVar11 & 7" (identifier "bVar11") (& "&") (number_literal "7"))) (; ";")) (if_statement "if (bVar3 == 2) {\n          uVar9 = 2;\n        }\n        else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }" (if "if") (parenthesized_expression "(bVar3 == 2)" (( "(") (binary_expression "bVar3 == 2" (identifier "bVar3") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n          uVar9 = 2;\n        }" ({ "{") (expression_statement "uVar9 = 2;" (assignment_expression "uVar9 = 2" (identifier "uVar9") (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }" (else "else") (compound_statement "{\n          if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }\n          uVar9 = 8;\n        }" ({ "{") (if_statement "if (bVar3 < 3) {\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }\n          else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }" (if "if") (parenthesized_expression "(bVar3 < 3)" (( "(") (binary_expression "bVar3 < 3" (identifier "bVar3") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n            if (bVar3 != 0) {\n              return 0;\n            }\n          }" ({ "{") (if_statement "if (bVar3 != 0) {\n              return 0;\n            }" (if "if") (parenthesized_expression "(bVar3 != 0)" (( "(") (binary_expression "bVar3 != 0" (identifier "bVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              return 0;\n            }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }" (else "else") (compound_statement "{\n            if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }\n            if (bVar3 != 4) {\n              return 0;\n            }\n          }" ({ "{") (if_statement "if (bVar3 == 3) {\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }" (if "if") (parenthesized_expression "(bVar3 == 3)" (( "(") (binary_expression "bVar3 == 3" (identifier "bVar3") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n              uVar9 = 4;\n              goto LAB_002213bf;\n            }" ({ "{") (expression_statement "uVar9 = 4;" (assignment_expression "uVar9 = 4" (identifier "uVar9") (= "=") (number_literal "4")) (; ";")) (goto_statement "goto LAB_002213bf;" (goto "goto") (statement_identifier "LAB_002213bf") (; ";")) (} "}"))) (if_statement "if (bVar3 != 4) {\n              return 0;\n            }" (if "if") (parenthesized_expression "(bVar3 != 4)" (( "(") (binary_expression "bVar3 != 4" (identifier "bVar3") (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\n              return 0;\n            }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar9 = 8;" (assignment_expression "uVar9 = 8" (identifier "uVar9") (= "=") (number_literal "8")) (; ";")) (} "}")))) (labeled_statement "LAB_002213bf:\n        uVar12 = (int)param_10 - (int)pbVar13;" (statement_identifier "LAB_002213bf") (: ":") (expression_statement "uVar12 = (int)param_10 - (int)pbVar13;" (assignment_expression "uVar12 = (int)param_10 - (int)pbVar13" (identifier "uVar12") (= "=") (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_10")) (- "-") (cast_expression "(int)pbVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar13")))) (; ";"))) (if_statement "if ((bVar11 & 0xf0) == 0x50) {\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }" (if "if") (parenthesized_expression "((bVar11 & 0xf0) == 0x50)" (( "(") (binary_expression "(bVar11 & 0xf0) == 0x50" (parenthesized_expression "(bVar11 & 0xf0)" (( "(") (binary_expression "bVar11 & 0xf0" (identifier "bVar11") (& "&") (number_literal "0xf0")) () ")")) (== "==") (number_literal "0x50")) () ")")) (compound_statement "{\n          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }\n          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));\n          uVar12 = (int)param_10 - (int)pbVar13;\n        }" ({ "{") (if_statement "if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))))" (( "(") (binary_expression "uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" (identifier "uVar12") (< "<") (parenthesized_expression "(-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" (( "(") (binary_expression "-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))" (unary_expression "-uVar9" (- "-") (identifier "uVar9")) (& "&") (call_expression "(uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pbVar13 + ((uVar9 - 1) - (int)param_9))" (( "(") (binary_expression "pbVar13 + ((uVar9 - 1) - (int)param_9)" (identifier "pbVar13") (+ "+") (parenthesized_expression "((uVar9 - 1) - (int)param_9)" (( "(") (binary_expression "(uVar9 - 1) - (int)param_9" (parenthesized_expression "(uVar9 - 1)" (( "(") (binary_expression "uVar9 - 1" (identifier "uVar9") (- "-") (number_literal "1")) () ")")) (- "-") (cast_expression "(int)param_9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_9"))) () ")"))) () ")")))) () ")"))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));" (assignment_expression "pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" (identifier "pbVar13") (+ "+") (parenthesized_expression "(-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))" (( "(") (binary_expression "-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))" (unary_expression "-uVar9" (- "-") (identifier "uVar9")) (& "&") (call_expression "(uint)(pbVar13 + ((uVar9 - 1) - (int)param_9))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pbVar13 + ((uVar9 - 1) - (int)param_9))" (( "(") (binary_expression "pbVar13 + ((uVar9 - 1) - (int)param_9)" (identifier "pbVar13") (+ "+") (parenthesized_expression "((uVar9 - 1) - (int)param_9)" (( "(") (binary_expression "(uVar9 - 1) - (int)param_9" (parenthesized_expression "(uVar9 - 1)" (( "(") (binary_expression "uVar9 - 1" (identifier "uVar9") (- "-") (number_literal "1")) () ")")) (- "-") (cast_expression "(int)param_9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_9"))) () ")"))) () ")")))) () ")")))) (; ";")) (expression_statement "uVar12 = (int)param_10 - (int)pbVar13;" (assignment_expression "uVar12 = (int)param_10 - (int)pbVar13" (identifier "uVar12") (= "=") (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_10")) (- "-") (cast_expression "(int)pbVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar13")))) (; ";")) (} "}"))) (expression_statement "local_9c = (int ***)((int)pbVar13 - param_8);" (assignment_expression "local_9c = (int ***)((int)pbVar13 - param_8)" (identifier "local_9c") (= "=") (cast_expression "(int ***)((int)pbVar13 - param_8)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)pbVar13 - param_8)" (( "(") (binary_expression "(int)pbVar13 - param_8" (cast_expression "(int)pbVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar13")) (- "-") (identifier "param_8")) () ")")))) (; ";")) (if_statement "if (uVar12 < uVar9) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(uVar12 < uVar9)" (( "(") (binary_expression "uVar12 < uVar9" (identifier "uVar12") (< "<") (identifier "uVar9")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pbVar13 = pbVar13 + uVar9;" (assignment_expression "pbVar13 = pbVar13 + uVar9" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + uVar9" (identifier "pbVar13") (+ "+") (identifier "uVar9"))) (; ";")) (} "}")) (else_clause "else {\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }" (else "else") (compound_statement "{\n        if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }\n        pbVar13 = pbVar13 + 1;\n      }" ({ "{") (if_statement "if (bVar11 < 0x51) {\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }\n        else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }" (if "if") (parenthesized_expression "(bVar11 < 0x51)" (( "(") (binary_expression "bVar11 < 0x51" (identifier "bVar11") (< "<") (number_literal "0x51")) () ")")) (compound_statement "{\n          if (bVar11 != 0x4c) {\n            return 0;\n          }\n          if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }\n        }" ({ "{") (if_statement "if (bVar11 != 0x4c) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(bVar11 != 0x4c)" (( "(") (binary_expression "bVar11 != 0x4c" (identifier "bVar11") (!= "!=") (number_literal "0x4c")) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((int)param_10 - (int)pbVar13 < 1) {\n            return 0;\n          }" (if "if") (parenthesized_expression "((int)param_10 - (int)pbVar13 < 1)" (( "(") (binary_expression "(int)param_10 - (int)pbVar13 < 1" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_10")) (- "-") (cast_expression "(int)pbVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar13"))) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }" (else "else") (compound_statement "{\n          if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }\n          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }\n          local_94._0_1_ = *pbVar13;\n          if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }\n          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }\n        }" ({ "{") (if_statement "if (bVar11 != 0x52) {\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }" (if "if") (parenthesized_expression "(bVar11 != 0x52)" (( "(") (binary_expression "bVar11 != 0x52" (identifier "bVar11") (!= "!=") (number_literal "0x52")) () ")")) (compound_statement "{\n            if (bVar11 != 0x53) {\n              return 0;\n            }\n            goto LAB_002210d9;\n          }" ({ "{") (if_statement "if (bVar11 != 0x53) {\n              return 0;\n            }" (if "if") (parenthesized_expression "(bVar11 != 0x53)" (( "(") (binary_expression "bVar11 != 0x53" (identifier "bVar11") (!= "!=") (number_literal "0x53")) () ")")) (compound_statement "{\n              return 0;\n            }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_002210d9;" (goto "goto") (statement_identifier "LAB_002210d9") (; ";")) (} "}"))) (if_statement "if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0)" (( "(") (binary_expression "param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0" (binary_expression "param_10 == pbVar13" (identifier "param_10") (== "==") (identifier "pbVar13")) (|| "||") (binary_expression "(int)param_10 - (int)pbVar13 < 0" (binary_expression "(int)param_10 - (int)pbVar13" (cast_expression "(int)param_10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_10")) (- "-") (cast_expression "(int)pbVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar13"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "local_94._0_1_ = *pbVar13;" (assignment_expression "local_94._0_1_ = *pbVar13" (field_expression "local_94._0_1_" (identifier "local_94") (. ".") (field_identifier "_0_1_")) (= "=") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13"))) (; ";")) (if_statement "if (4 < ((byte)local_94 & 7)) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(4 < ((byte)local_94 & 7))" (( "(") (binary_expression "4 < ((byte)local_94 & 7)" (number_literal "4") (< "<") (parenthesized_expression "((byte)local_94 & 7)" (( "(") (binary_expression "(byte)local_94 & 7" (cast_expression "(byte)local_94" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_94")) (& "&") (number_literal "7")) () ")"))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {\n            return 0;\n          }" (if "if") (parenthesized_expression "((1 << ((byte)local_94 & 7) & 0x1dU) == 0)" (( "(") (binary_expression "(1 << ((byte)local_94 & 7) & 0x1dU) == 0" (parenthesized_expression "(1 << ((byte)local_94 & 7) & 0x1dU)" (( "(") (binary_expression "1 << ((byte)local_94 & 7) & 0x1dU" (binary_expression "1 << ((byte)local_94 & 7)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)local_94 & 7)" (( "(") (binary_expression "(byte)local_94 & 7" (cast_expression "(byte)local_94" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_94")) (& "&") (number_literal "7")) () ")"))) (& "&") (number_literal "0x1dU")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")))) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (labeled_statement "LAB_002210d9:\n      pbVar17 = pbVar17 + 1;" (statement_identifier "LAB_002210d9") (: ":") (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" (identifier "pbVar17") (= "=") (binary_expression "pbVar17 + 1" (identifier "pbVar17") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "bVar11 = *pbVar17;" (assignment_expression "bVar11 = *pbVar17" (identifier "bVar11") (= "=") (pointer_expression "*pbVar17" (* "*") (identifier "pbVar17"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11 != 0)" (( "(") (binary_expression "bVar11 != 0" (identifier "bVar11") (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;" (if "if") (parenthesized_expression "(local_9c == (int ***)0xffffffff)" (( "(") (binary_expression "local_9c == (int ***)0xffffffff" (identifier "local_9c") (== "==") (cast_expression "(int ***)0xffffffff" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (number_literal "0xffffffff"))) () ")")) (goto_statement "goto LAB_002214ac;" (goto "goto") (statement_identifier "LAB_002214ac") (; ";"))) (expression_statement "local_a0 = (int)local_9c >> 0x1f;" (assignment_expression "local_a0 = (int)local_9c >> 0x1f" (identifier "local_a0") (= "=") (binary_expression "(int)local_9c >> 0x1f" (cast_expression "(int)local_9c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_9c")) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "local_a4 = local_9c;" (assignment_expression "local_a4 = local_9c" (identifier "local_a4") (= "=") (identifier "local_9c")) (; ";")) (expression_statement "iVar7 = FUN_001b4510(param_11,local_9c,local_a0);" (assignment_expression "iVar7 = FUN_001b4510(param_11,local_9c,local_a0)" (identifier "iVar7") (= "=") (call_expression "FUN_001b4510(param_11,local_9c,local_a0)" (identifier "FUN_001b4510") (argument_list "(param_11,local_9c,local_a0)" (( "(") (identifier "param_11") (, ",") (identifier "local_9c") (, ",") (identifier "local_a0") () ")")))) (; ";")) (if_statement "if (0 < iVar7) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(0 < iVar7)" (( "(") (binary_expression "0 < iVar7" (number_literal "0") (< "<") (identifier "iVar7")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "lVar20 = FUN_001b4420(param_11);" (assignment_expression "lVar20 = FUN_001b4420(param_11)" (identifier "lVar20") (= "=") (call_expression "FUN_001b4420(param_11)" (identifier "FUN_001b4420") (argument_list "(param_11)" (( "(") (identifier "param_11") () ")")))) (; ";")) (if_statement "if (lVar20 != CONCAT44(local_a0,local_9c)) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(lVar20 != CONCAT44(local_a0,local_9c))" (( "(") (binary_expression "lVar20 != CONCAT44(local_a0,local_9c)" (identifier "lVar20") (!= "!=") (call_expression "CONCAT44(local_a0,local_9c)" (identifier "CONCAT44") (argument_list "(local_a0,local_9c)" (( "(") (identifier "local_a0") (, ",") (identifier "local_9c") () ")")))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pppiStack_b0 = (int ***)FUN_001b4450(param_11);" (assignment_expression "pppiStack_b0 = (int ***)FUN_001b4450(param_11)" (identifier "pppiStack_b0") (= "=") (cast_expression "(int ***)FUN_001b4450(param_11)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (call_expression "FUN_001b4450(param_11)" (identifier "FUN_001b4450") (argument_list "(param_11)" (( "(") (identifier "param_11") () ")"))))) (; ";")) (if_statement "if (pppiStack_b0 == (int ***)0xffffffff) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(pppiStack_b0 == (int ***)0xffffffff)" (( "(") (binary_expression "pppiStack_b0 == (int ***)0xffffffff" (identifier "pppiStack_b0") (== "==") (cast_expression "(int ***)0xffffffff" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);" (assignment_expression "pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2)" (identifier "pppiVar8") (= "=") (cast_expression "(int ***)(**(code **)(*param_2 + 0x8c))(param_2)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (call_expression "(**(code **)(*param_2 + 0x8c))(param_2)" (parenthesized_expression "(**(code **)(*param_2 + 0x8c))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x8c)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x8c)" (* "*") (cast_expression "(code **)(*param_2 + 0x8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x8c)" (( "(") (binary_expression "*param_2 + 0x8c" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x8c")) () ")"))))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))))) (; ";")) (if_statement "if (pppiStack_b0 < pppiVar8) {\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }\n    else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }" (if "if") (parenthesized_expression "(pppiStack_b0 < pppiVar8)" (( "(") (binary_expression "pppiStack_b0 < pppiVar8" (identifier "pppiStack_b0") (< "<") (identifier "pppiVar8")) () ")")) (compound_statement "{\n      local_95 = '\0';\n      local_a4 = (int ***)((int)local_90 + -0x102e4a);\n    }" ({ "{") (expression_statement "local_95 = '\0';" (assignment_expression "local_95 = '\0'" (identifier "local_95") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_a4 = (int ***)((int)local_90 + -0x102e4a);" (assignment_expression "local_a4 = (int ***)((int)local_90 + -0x102e4a)" (identifier "local_a4") (= "=") (cast_expression "(int ***)((int)local_90 + -0x102e4a)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)local_90 + -0x102e4a)" (( "(") (binary_expression "(int)local_90 + -0x102e4a" (cast_expression "(int)local_90" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_90")) (+ "+") (number_literal "-0x102e4a")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }" (else "else") (compound_statement "{\n      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }\n      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);\n      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }\n      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);\n    }" ({ "{") (if_statement "if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "((int ***)(param_5 / 0x18) <= pppiStack_b0)" (( "(") (binary_expression "(int ***)(param_5 / 0x18) <= pppiStack_b0" (cast_expression "(int ***)(param_5 / 0x18)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(param_5 / 0x18)" (( "(") (binary_expression "param_5 / 0x18" (identifier "param_5") (/ "/") (number_literal "0x18")) () ")"))) (<= "<=") (identifier "pppiStack_b0")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);" (assignment_expression "pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18)" (identifier "pppiStack_b0") (= "=") (cast_expression "(int ***)((int)pppiStack_b0 * 0x18)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)pppiStack_b0 * 0x18)" (( "(") (binary_expression "(int)pppiStack_b0 * 0x18" (cast_expression "(int)pppiStack_b0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppiStack_b0")) (* "*") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(param_7 <= *(uint *)((int)pppiStack_b0 + param_4))" (( "(") (binary_expression "param_7 <= *(uint *)((int)pppiStack_b0 + param_4)" (identifier "param_7") (<= "<=") (pointer_expression "*(uint *)((int)pppiStack_b0 + param_4)" (* "*") (cast_expression "(uint *)((int)pppiStack_b0 + param_4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppiStack_b0 + param_4)" (( "(") (binary_expression "(int)pppiStack_b0 + param_4" (cast_expression "(int)pppiStack_b0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppiStack_b0")) (+ "+") (identifier "param_4")) () ")"))))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);" (assignment_expression "local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6)" (identifier "local_a4") (= "=") (cast_expression "(int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(*(uint *)((int)pppiStack_b0 + param_4) + param_6)" (( "(") (binary_expression "*(uint *)((int)pppiStack_b0 + param_4) + param_6" (pointer_expression "*(uint *)((int)pppiStack_b0 + param_4)" (* "*") (cast_expression "(uint *)((int)pppiStack_b0 + param_4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppiStack_b0 + param_4)" (( "(") (binary_expression "(int)pppiStack_b0 + param_4" (cast_expression "(int)pppiStack_b0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppiStack_b0")) (+ "+") (identifier "param_4")) () ")")))) (+ "+") (identifier "param_6")) () ")")))) (; ";")) (} "}")))) (expression_statement "iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);" (assignment_expression "iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f)" (identifier "iVar7") (= "=") (call_expression "FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f)" (identifier "FUN_001b4510") (argument_list "(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f)" (( "(") (identifier "param_11") (, ",") (binary_expression "(int)local_9c + 1" (cast_expression "(int)local_9c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_9c")) (+ "+") (number_literal "1")) (, ",") (binary_expression "(int)local_9c + 1 >> 0x1f" (binary_expression "(int)local_9c + 1" (cast_expression "(int)local_9c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_9c")) (+ "+") (number_literal "1")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "pppiVar8 = local_a4;" (assignment_expression "pppiVar8 = local_a4" (identifier "pppiVar8") (= "=") (identifier "local_a4")) (; ";")) (if_statement "if (iVar7 != 1) {\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }" (if "if") (parenthesized_expression "(iVar7 != 1)" (( "(") (binary_expression "iVar7 != 1" (identifier "iVar7") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      pppiStack_b0 = (int ***)(uint)(byte)local_94;\n                    \n      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);\n    }" ({ "{") (expression_statement "pppiStack_b0 = (int ***)(uint)(byte)local_94;" (assignment_expression "pppiStack_b0 = (int ***)(uint)(byte)local_94" (identifier "pppiStack_b0") (= "=") (cast_expression "(int ***)(uint)(byte)local_94" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (cast_expression "(uint)(byte)local_94" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)local_94" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_94"))))) (; ";")) (expression_statement "FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);" (call_expression "FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969)" (identifier "FUN_000da200") (argument_list "((int)local_90 + -0x102679,0x3af,local_90 + -0x40969)" (( "(") (binary_expression "(int)local_90 + -0x102679" (cast_expression "(int)local_90" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_90")) (+ "+") (number_literal "-0x102679")) (, ",") (number_literal "0x3af") (, ",") (binary_expression "local_90 + -0x40969" (identifier "local_90") (+ "+") (number_literal "-0x40969")) () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "pppiVar18 = (int ***)(param_10 + -param_8);" (assignment_expression "pppiVar18 = (int ***)(param_10 + -param_8)" (identifier "pppiVar18") (= "=") (cast_expression "(int ***)(param_10 + -param_8)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(param_10 + -param_8)" (( "(") (binary_expression "param_10 + -param_8" (identifier "param_10") (+ "+") (unary_expression "-param_8" (- "-") (identifier "param_8"))) () ")")))) (; ";")) (expression_statement "local_9c = pppiVar8;" (assignment_expression "local_9c = pppiVar8" (identifier "local_9c") (= "=") (identifier "pppiVar8")) (; ";")) (expression_statement "iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f);" (assignment_expression "iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f)" (identifier "iVar7") (= "=") (call_expression "FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f)" (identifier "FUN_001b4510") (argument_list "(param_11,pppiVar18,(int)pppiVar18 >> 0x1f)" (( "(") (identifier "param_11") (, ",") (identifier "pppiVar18") (, ",") (binary_expression "(int)pppiVar18 >> 0x1f" (cast_expression "(int)pppiVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppiVar18")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (0 < iVar7) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(0 < iVar7)" (( "(") (binary_expression "0 < iVar7" (number_literal "0") (< "<") (identifier "iVar7")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "local_5c = (byte)local_94;" (assignment_expression "local_5c = (byte)local_94" (identifier "local_5c") (= "=") (cast_expression "(byte)local_94" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_94"))) (; ";")) (expression_statement "pbVar17 = (byte *)0xffffffff;" (assignment_expression "pbVar17 = (byte *)0xffffffff" (identifier "pbVar17") (= "=") (cast_expression "(byte *)0xffffffff" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (expression_statement "local_a4 = (int ***)(param_9 + -8);" (assignment_expression "local_a4 = (int ***)(param_9 + -8)" (identifier "local_a4") (= "=") (cast_expression "(int ***)(param_9 + -8)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(param_9 + -8)" (( "(") (binary_expression "param_9 + -8" (identifier "param_9") (+ "+") (number_literal "-8")) () ")")))) (; ";")) (expression_statement "iVar7 = (int)local_a4 - param_8;" (assignment_expression "iVar7 = (int)local_a4 - param_8" (identifier "iVar7") (= "=") (binary_expression "(int)local_a4 - param_8" (cast_expression "(int)local_a4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_a4")) (- "-") (identifier "param_8"))) (; ";")) (expression_statement "local_68 = param_2;" (assignment_expression "local_68 = param_2" (identifier "local_68") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_64 = param_3;" (assignment_expression "local_64 = param_3" (identifier "local_64") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_94 = (int **)local_50;" (assignment_expression "local_94 = (int **)local_50" (identifier "local_94") (= "=") (cast_expression "(int **)local_50" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_50"))) (; ";")) (expression_statement "pppiVar8 = local_9c;" (assignment_expression "pppiVar8 = local_9c" (identifier "pppiVar8") (= "=") (identifier "local_9c")) (; ";")) (if_statement "if (local_9c != (int ***)0x0) {\n    do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);\n    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));\n  }" (if "if") (parenthesized_expression "(local_9c != (int ***)0x0)" (( "(") (binary_expression "local_9c != (int ***)0x0" (identifier "local_9c") (!= "!=") (cast_expression "(int ***)0x0" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);\n    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));\n  }" ({ "{") (do_statement "do {\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    } while (bVar11 != 0);" (do "do") (compound_statement "{\n      pppiVar18 = pppiVar8;\n      if (pbVar17 == (byte *)0x0) break;\n      pbVar17 = pbVar17 + -1;\n      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);\n      bVar11 = *(byte *)pppiVar8;\n      pppiVar8 = pppiVar18;\n    }" ({ "{") (expression_statement "pppiVar18 = pppiVar8;" (assignment_expression "pppiVar18 = pppiVar8" (identifier "pppiVar18") (= "=") (identifier "pppiVar8")) (; ";")) (if_statement "if (pbVar17 == (byte *)0x0) break;" (if "if") (parenthesized_expression "(pbVar17 == (byte *)0x0)" (( "(") (binary_expression "pbVar17 == (byte *)0x0" (identifier "pbVar17") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar17 = pbVar17 + -1;" (assignment_expression "pbVar17 = pbVar17 + -1" (identifier "pbVar17") (= "=") (binary_expression "pbVar17 + -1" (identifier "pbVar17") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);" (assignment_expression "pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1)" (identifier "pppiVar18") (= "=") (cast_expression "(int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)pppiVar8 + (uint)bVar19 * -2 + 1)" (( "(") (binary_expression "(int)pppiVar8 + (uint)bVar19 * -2 + 1" (binary_expression "(int)pppiVar8 + (uint)bVar19 * -2" (cast_expression "(int)pppiVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppiVar8")) (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "bVar11 = *(byte *)pppiVar8;" (assignment_expression "bVar11 = *(byte *)pppiVar8" (identifier "bVar11") (= "=") (pointer_expression "*(byte *)pppiVar8" (* "*") (cast_expression "(byte *)pppiVar8" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pppiVar8")))) (; ";")) (expression_statement "pppiVar8 = pppiVar18;" (assignment_expression "pppiVar8 = pppiVar18" (identifier "pppiVar8") (= "=") (identifier "pppiVar18")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11 != 0)" (( "(") (binary_expression "bVar11 != 0" (identifier "bVar11") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));" (assignment_expression "pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1))" (identifier "pbVar17") (= "=") (cast_expression "(byte *)((int)local_9c + (~(uint)pbVar17 - 1))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_9c + (~(uint)pbVar17 - 1))" (( "(") (binary_expression "(int)local_9c + (~(uint)pbVar17 - 1)" (cast_expression "(int)local_9c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_9c")) (+ "+") (parenthesized_expression "(~(uint)pbVar17 - 1)" (( "(") (binary_expression "~(uint)pbVar17 - 1" (unary_expression "~(uint)pbVar17" (~ "~") (cast_expression "(uint)pbVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar17"))) (- "-") (number_literal "1")) () ")"))) () ")")))) (; ";")) (} "}"))) (expression_statement "pppiStack_b0 = (int ***)0x0;" (assignment_expression "pppiStack_b0 = (int ***)0x0" (identifier "pppiStack_b0") (= "=") (cast_expression "(int ***)0x0" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_60 = iVar7;" (assignment_expression "local_60 = iVar7" (identifier "local_60") (= "=") (identifier "iVar7")) (; ";")) (expression_statement "local_58[0] = (undefined1 *)local_94;" (assignment_expression "local_58[0] = (undefined1 *)local_94" (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(undefined1 *)local_94" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_94"))) (; ";")) (expression_statement "FUN_000a8880(local_58,local_9c,pbVar17);" (call_expression "FUN_000a8880(local_58,local_9c,pbVar17)" (identifier "FUN_000a8880") (argument_list "(local_58,local_9c,pbVar17)" (( "(") (identifier "local_58") (, ",") (identifier "local_9c") (, ",") (identifier "pbVar17") () ")"))) (; ";")) (expression_statement "local_34[0] = local_2c;" (assignment_expression "local_34[0] = local_2c" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_2c")) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "pppiStack_b0 = (int ***)0x0;" (assignment_expression "pppiStack_b0 = (int ***)0x0" (identifier "pppiStack_b0") (= "=") (cast_expression "(int ***)0x0" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_000a8880(local_34,param_9,param_10);" (call_expression "FUN_000a8880(local_34,param_9,param_10)" (identifier "FUN_000a8880") (argument_list "(local_34,param_9,param_10)" (( "(") (identifier "local_34") (, ",") (identifier "param_9") (, ",") (identifier "param_10") () ")"))) (; ";")) (expression_statement "local_94 = &local_68;" (assignment_expression "local_94 = &local_68" (identifier "local_94") (= "=") (pointer_expression "&local_68" (& "&") (identifier "local_68"))) (; ";")) (expression_statement "ppppiVar16 = (int ****)auStack_ac;" (assignment_expression "ppppiVar16 = (int ****)auStack_ac" (identifier "ppppiVar16") (= "=") (cast_expression "(int ****)auStack_ac" (( "(") (type_descriptor "int ****" (primitive_type "int") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))) () ")") (identifier "auStack_ac"))) (; ";")) (expression_statement "iVar2 = local_a8;" (assignment_expression "iVar2 = local_a8" (identifier "iVar2") (= "=") (identifier "local_a8")) (; ";")) (if_statement "if (local_95 != '\0') {\n    local_9c = &local_70;\n    pppiStack_b0 = pppiVar18;\n    local_70 = local_94;\n    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);\n    iVar14 = param_1 + 0x34;\n    if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(local_95 != '\0')" (( "(") (binary_expression "local_95 != '\0'" (identifier "local_95") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_9c = &local_70;\n    pppiStack_b0 = pppiVar18;\n    local_70 = local_94;\n    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);\n    iVar14 = param_1 + 0x34;\n    if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }\n  }" ({ "{") (expression_statement "local_9c = &local_70;" (assignment_expression "local_9c = &local_70" (identifier "local_9c") (= "=") (pointer_expression "&local_70" (& "&") (identifier "local_70"))) (; ";")) (expression_statement "pppiStack_b0 = pppiVar18;" (assignment_expression "pppiStack_b0 = pppiVar18" (identifier "pppiStack_b0") (= "=") (identifier "pppiVar18")) (; ";")) (expression_statement "local_70 = local_94;" (assignment_expression "local_70 = local_94" (identifier "local_70") (= "=") (identifier "local_94")) (; ";")) (expression_statement "FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);" (call_expression "FUN_0021b4b0(local_80,param_1 + 0x30,local_9c)" (identifier "FUN_0021b4b0") (argument_list "(local_80,param_1 + 0x30,local_9c)" (( "(") (identifier "local_80") (, ",") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) (, ",") (identifier "local_9c") () ")"))) (; ";")) (expression_statement "iVar14 = param_1 + 0x34;" (assignment_expression "iVar14 = param_1 + 0x34" (identifier "iVar14") (= "=") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34"))) (; ";")) (if_statement "if (local_80[0] == iVar14) {\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }\n    else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }" (if "if") (parenthesized_expression "(local_80[0] == iVar14)" (( "(") (binary_expression "local_80[0] == iVar14" (subscript_expression "local_80[0]" (identifier "local_80") ([ "[") (number_literal "0") (] "]")) (== "==") (identifier "iVar14")) () ")")) (compound_statement "{\n      piVar1 = (int *)param_13[1];\n      iVar2 = local_a8;\n      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }\n    }" ({ "{") (expression_statement "piVar1 = (int *)param_13[1];" (assignment_expression "piVar1 = (int *)param_13[1]" (identifier "piVar1") (= "=") (cast_expression "(int *)param_13[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_13[1]" (identifier "param_13") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "iVar2 = local_a8;" (assignment_expression "iVar2 = local_a8" (identifier "iVar2") (= "=") (identifier "local_a8")) (; ";")) (for_statement "for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1; piVar15 = piVar15 + 2) {\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }" (for "for") (( "(") (assignment_expression "piVar15 = (int *)*param_13" (identifier "piVar15") (= "=") (cast_expression "(int *)*param_13" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_13" (* "*") (identifier "param_13")))) (; ";") (comma_expression "local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1" (assignment_expression "local_a8 = iVar7" (identifier "local_a8") (= "=") (identifier "iVar7")) (, ",") (comma_expression "ppppiVar16 = &pppiStack_b0,\n          piVar15 != piVar1" (assignment_expression "ppppiVar16 = &pppiStack_b0" (identifier "ppppiVar16") (= "=") (pointer_expression "&pppiStack_b0" (& "&") (identifier "pppiStack_b0"))) (, ",") (binary_expression "piVar15 != piVar1" (identifier "piVar15") (!= "!=") (identifier "piVar1")))) (; ";") (assignment_expression "piVar15 = piVar15 + 2" (identifier "piVar15") (= "=") (binary_expression "piVar15 + 2" (identifier "piVar15") (+ "+") (number_literal "2"))) () ")") (compound_statement "{\n        ppiVar10 = (int **)*piVar15;\n        cVar4 = FUN_0021a660(ppiVar10,local_94);\n        iVar14 = extraout_EDX;\n        iVar7 = local_a8;\n        if (cVar4 != '\0') goto LAB_002212f4;\n        iVar2 = local_a8;\n      }" ({ "{") (expression_statement "ppiVar10 = (int **)*piVar15;" (assignment_expression "ppiVar10 = (int **)*piVar15" (identifier "ppiVar10") (= "=") (cast_expression "(int **)*piVar15" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "*piVar15" (* "*") (identifier "piVar15")))) (; ";")) (expression_statement "cVar4 = FUN_0021a660(ppiVar10,local_94);" (assignment_expression "cVar4 = FUN_0021a660(ppiVar10,local_94)" (identifier "cVar4") (= "=") (call_expression "FUN_0021a660(ppiVar10,local_94)" (identifier "FUN_0021a660") (argument_list "(ppiVar10,local_94)" (( "(") (identifier "ppiVar10") (, ",") (identifier "local_94") () ")")))) (; ";")) (expression_statement "iVar14 = extraout_EDX;" (assignment_expression "iVar14 = extraout_EDX" (identifier "iVar14") (= "=") (identifier "extraout_EDX")) (; ";")) (expression_statement "iVar7 = local_a8;" (assignment_expression "iVar7 = local_a8" (identifier "iVar7") (= "=") (identifier "local_a8")) (; ";")) (if_statement "if (cVar4 != '\0') goto LAB_002212f4;" (if "if") (parenthesized_expression "(cVar4 != '\0')" (( "(") (binary_expression "cVar4 != '\0'" (identifier "cVar4") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_002212f4;" (goto "goto") (statement_identifier "LAB_002212f4") (; ";"))) (expression_statement "iVar2 = local_a8;" (assignment_expression "iVar2 = local_a8" (identifier "iVar2") (= "=") (identifier "local_a8")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }" (else "else") (compound_statement "{\n      ppiVar10 = *(int ***)(local_80[0] + 0x10);\nLAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;\n      iVar2 = local_a8;\n      if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }\n    }" ({ "{") (expression_statement "ppiVar10 = *(int ***)(local_80[0] + 0x10);" (assignment_expression "ppiVar10 = *(int ***)(local_80[0] + 0x10)" (identifier "ppiVar10") (= "=") (pointer_expression "*(int ***)(local_80[0] + 0x10)" (* "*") (cast_expression "(int ***)(local_80[0] + 0x10)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(local_80[0] + 0x10)" (( "(") (binary_expression "local_80[0] + 0x10" (subscript_expression "local_80[0]" (identifier "local_80") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (labeled_statement "LAB_002212f4:\n      ppppiVar16 = &pppiStack_b0;" (statement_identifier "LAB_002212f4") (: ":") (expression_statement "ppppiVar16 = &pppiStack_b0;" (assignment_expression "ppppiVar16 = &pppiStack_b0" (identifier "ppppiVar16") (= "=") (pointer_expression "&pppiStack_b0" (& "&") (identifier "pppiStack_b0"))) (; ";"))) (expression_statement "iVar2 = local_a8;" (assignment_expression "iVar2 = local_a8" (identifier "iVar2") (= "=") (identifier "local_a8")) (; ";")) (if_statement "if (ppiVar10 != (int **)0x0) {\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }" (if "if") (parenthesized_expression "(ppiVar10 != (int **)0x0)" (( "(") (binary_expression "ppiVar10 != (int **)0x0" (identifier "ppiVar10") (!= "!=") (cast_expression "(int **)0x0" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);\n        ppppiVar16 = &pppiStack_b0;\n        goto LAB_0022131f;\n      }" ({ "{") (expression_statement "FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14);" (call_expression "FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14)" (identifier "FUN_00121dd0") (argument_list "(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,\n                     iVar14)" (( "(") (identifier "param_2") (, ",") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (identifier "iVar7") (, ",") (binary_expression "(int)param_10 - (int)local_a4" (cast_expression "(int)param_10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_10")) (- "-") (cast_expression "(int)local_a4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_a4"))) (, ",") (number_literal "0xffffffff") (, ",") (identifier "iVar14") (, ",") (identifier "iVar14") () ")"))) (; ";")) (expression_statement "ppppiVar16 = &pppiStack_b0;" (assignment_expression "ppppiVar16 = &pppiStack_b0" (identifier "ppppiVar16") (= "=") (pointer_expression "&pppiStack_b0" (& "&") (identifier "pppiStack_b0"))) (; ";")) (goto_statement "goto LAB_0022131f;" (goto "goto") (statement_identifier "LAB_0022131f") (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "local_a8 = iVar2;" (assignment_expression "local_a8 = iVar2" (identifier "local_a8") (= "=") (identifier "iVar2")) (; ";")) (expression_statement "ppppiVar16[-4] = (int ***)0x4c;" (assignment_expression "ppppiVar16[-4] = (int ***)0x4c" (subscript_expression "ppppiVar16[-4]" (identifier "ppppiVar16") ([ "[") (number_literal "-4") (] "]")) (= "=") (cast_expression "(int ***)0x4c" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (number_literal "0x4c"))) (; ";")) (expression_statement "ppppiVar16[-5] = (int ***)0x2214cd;" (assignment_expression "ppppiVar16[-5] = (int ***)0x2214cd" (subscript_expression "ppppiVar16[-5]" (identifier "ppppiVar16") ([ "[") (number_literal "-5") (] "]")) (= "=") (cast_expression "(int ***)0x2214cd" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (number_literal "0x2214cd"))) (; ";")) (expression_statement "ppiVar10 = (int **)FUN_00246670();" (assignment_expression "ppiVar10 = (int **)FUN_00246670()" (identifier "ppiVar10") (= "=") (cast_expression "(int **)FUN_00246670()" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (call_expression "FUN_00246670()" (identifier "FUN_00246670") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "ppppiVar16[-3] = (int ***)local_94;" (assignment_expression "ppppiVar16[-3] = (int ***)local_94" (subscript_expression "ppppiVar16[-3]" (identifier "ppppiVar16") ([ "[") (number_literal "-3") (] "]")) (= "=") (cast_expression "(int ***)local_94" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "local_94"))) (; ";")) (expression_statement "ppppiVar16[-4] = (int ***)ppiVar10;" (assignment_expression "ppppiVar16[-4] = (int ***)ppiVar10" (subscript_expression "ppppiVar16[-4]" (identifier "ppppiVar16") ([ "[") (number_literal "-4") (] "]")) (= "=") (cast_expression "(int ***)ppiVar10" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "ppiVar10"))) (; ";")) (expression_statement "ppppiVar16[-5] = (int ***)0x2214dd;" (assignment_expression "ppppiVar16[-5] = (int ***)0x2214dd" (subscript_expression "ppppiVar16[-5]" (identifier "ppppiVar16") ([ "[") (number_literal "-5") (] "]")) (= "=") (cast_expression "(int ***)0x2214dd" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (number_literal "0x2214dd"))) (; ";")) (expression_statement "FUN_0021dba0();" (call_expression "FUN_0021dba0()" (identifier "FUN_0021dba0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_6c = (int **)CONCAT31(local_6c._1_3_,local_95);" (assignment_expression "local_6c = (int **)CONCAT31(local_6c._1_3_,local_95)" (identifier "local_6c") (= "=") (cast_expression "(int **)CONCAT31(local_6c._1_3_,local_95)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (call_expression "CONCAT31(local_6c._1_3_,local_95)" (identifier "CONCAT31") (argument_list "(local_6c._1_3_,local_95)" (( "(") (field_expression "local_6c._1_3_" (identifier "local_6c") (. ".") (field_identifier "_1_3_")) (, ",") (identifier "local_95") () ")"))))) (; ";")) (expression_statement "local_9c = &local_70;" (assignment_expression "local_9c = &local_70" (identifier "local_9c") (= "=") (pointer_expression "&local_70" (& "&") (identifier "local_70"))) (; ";")) (expression_statement "ppppiVar16[-3] = local_9c;" (assignment_expression "ppppiVar16[-3] = local_9c" (subscript_expression "ppppiVar16[-3]" (identifier "ppppiVar16") ([ "[") (number_literal "-3") (] "]")) (= "=") (identifier "local_9c")) (; ";")) (expression_statement "ppppiVar16[-4] = (int ***)param_13;" (assignment_expression "ppppiVar16[-4] = (int ***)param_13" (subscript_expression "ppppiVar16[-4]" (identifier "ppppiVar16") ([ "[") (number_literal "-4") (] "]")) (= "=") (cast_expression "(int ***)param_13" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "param_13"))) (; ";")) (expression_statement "ppppiVar16[-5] = (int ***)0x2214fe;" (assignment_expression "ppppiVar16[-5] = (int ***)0x2214fe" (subscript_expression "ppppiVar16[-5]" (identifier "ppppiVar16") ([ "[") (number_literal "-5") (] "]")) (= "=") (cast_expression "(int ***)0x2214fe" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (number_literal "0x2214fe"))) (; ";")) (expression_statement "local_70 = ppiVar10;" (assignment_expression "local_70 = ppiVar10" (identifier "local_70") (= "=") (identifier "ppiVar10")) (; ";")) (expression_statement "FUN_0021fa00();" (call_expression "FUN_0021fa00()" (identifier "FUN_0021fa00") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0022131f:\n  local_70 = (int **)(param_9 + -param_8);" (statement_identifier "LAB_0022131f") (: ":") (expression_statement "local_70 = (int **)(param_9 + -param_8);" (assignment_expression "local_70 = (int **)(param_9 + -param_8)" (identifier "local_70") (= "=") (cast_expression "(int **)(param_9 + -param_8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_9 + -param_8)" (( "(") (binary_expression "param_9 + -param_8" (identifier "param_9") (+ "+") (unary_expression "-param_8" (- "-") (identifier "param_8"))) () ")")))) (; ";"))) (expression_statement "*(int ****)((int)ppppiVar16 + -8) = local_9c;" (assignment_expression "*(int ****)((int)ppppiVar16 + -8) = local_9c" (pointer_expression "*(int ****)((int)ppppiVar16 + -8)" (* "*") (cast_expression "(int ****)((int)ppppiVar16 + -8)" (( "(") (type_descriptor "int ****" (primitive_type "int") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))) () ")") (parenthesized_expression "((int)ppppiVar16 + -8)" (( "(") (binary_expression "(int)ppppiVar16 + -8" (cast_expression "(int)ppppiVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppppiVar16")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "local_9c")) (; ";")) (expression_statement "*(undefined4 *)((int)ppppiVar16 + -0xc) = param_12;" (assignment_expression "*(undefined4 *)((int)ppppiVar16 + -0xc) = param_12" (pointer_expression "*(undefined4 *)((int)ppppiVar16 + -0xc)" (* "*") (cast_expression "(undefined4 *)((int)ppppiVar16 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppppiVar16 + -0xc)" (( "(") (binary_expression "(int)ppppiVar16 + -0xc" (cast_expression "(int)ppppiVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppppiVar16")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "param_12")) (; ";")) (expression_statement "*(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c;" (assignment_expression "*(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c" (pointer_expression "*(undefined1 **)((int)ppppiVar16 + -0x10)" (* "*") (cast_expression "(undefined1 **)((int)ppppiVar16 + -0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppppiVar16 + -0x10)" (( "(") (binary_expression "(int)ppppiVar16 + -0x10" (cast_expression "(int)ppppiVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppppiVar16")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_8c")) (; ";")) (expression_statement "*(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343;" (assignment_expression "*(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343" (pointer_expression "*(undefined4 *)((int)ppppiVar16 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)ppppiVar16 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppppiVar16 + -0x14)" (( "(") (binary_expression "(int)ppppiVar16 + -0x14" (cast_expression "(int)ppppiVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppppiVar16")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x221343")) (; ";")) (expression_statement "local_6c = ppiVar10;" (assignment_expression "local_6c = ppiVar10" (identifier "local_6c") (= "=") (identifier "ppiVar10")) (; ";")) (expression_statement "FUN_0021ef70();" (call_expression "FUN_0021ef70()" (identifier "FUN_0021ef70") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int ***)((int)ppppiVar16 + -0x14) = local_94;" (assignment_expression "*(int ***)((int)ppppiVar16 + -0x14) = local_94" (pointer_expression "*(int ***)((int)ppppiVar16 + -0x14)" (* "*") (cast_expression "(int ***)((int)ppppiVar16 + -0x14)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)ppppiVar16 + -0x14)" (( "(") (binary_expression "(int)ppppiVar16 + -0x14" (cast_expression "(int)ppppiVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppppiVar16")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "local_94")) (; ";")) (expression_statement "*(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e;" (assignment_expression "*(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e" (pointer_expression "*(undefined4 *)((int)ppppiVar16 + -0x18)" (* "*") (cast_expression "(undefined4 *)((int)ppppiVar16 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppppiVar16 + -0x18)" (( "(") (binary_expression "(int)ppppiVar16 + -0x18" (cast_expression "(int)ppppiVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppppiVar16")) (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x22134e")) (; ";")) (expression_statement "FUN_0021a270();" (call_expression "FUN_0021a270()" (identifier "FUN_0021a270") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original name: read_cie<64, false>
   DWARF original prototype: bool read_cie<64,_false>(Eh_frame * this, Sized_relobj_file<64,_false>
   * object, uint shndx, uchar * symbols, section_size_type symbols_size, uchar * symbol_names,
   section_size_type symbol_names_size, uchar * pcontents, uchar * pcie, uchar * pcieend,
   Track_relocs<64,_false> * relocs, Offsets_to_cie * cies, New_cies * new_cies) */

bool __thiscall
var_32::var_36::read_cie<64,var_17>
          (var_36 *this,Sized_relobj_file<64,var_17> *object,type_3 shndx,type_5 *var_25,
          section_size_type var_23,type_5 *var_26,section_size_type var_24,
          type_5 *pcontents,type_5 *var_2,type_5 *var_1,var_16<64,var_17> *relocs,
          Offsets_to_cie *cies,New_cies *new_cies)

{
  type_5 var_29;
  type_1 var_41;
  type_2 var_11;
  bool bVar4;
  void *var_5;
  int var_19;
  type_3 var_13;
  type_3 var_12;
  type_4 *var_44;
  type_2 var_3;
  type_5 *var_7;
  type_2 *var_9;
  type_5 *var_6;
  type_1 var_40;
  type_2 *var_10;
  type_5 *var_28;
  type_2 bVar15;
  type_6 var_21;
  type_7 *__in_chrg;
  var_48<var_53,_gold::type_4*> *var_15;
  char var_35;
  type_2 var_8;
  type_7 local_8c [12];
  type_7 *var_43;
  type_8 var_49;
  type_4 cie;
  
  bVar15 = 0;
  if (var_1 == var_2 || (int)var_1 - (int)var_2 < 0) {
    return false;
  }
  var_3 = *var_2;
  if ((var_3 & 0xfd) != 1) {
    return false;
  }
  var_10 = var_2 + 1;
  var_5 = var_4(var_10,0,(int)var_1 - (int)var_10);
  if (var_5 == (void *)0x0) {
    return false;
  }
  var_6 = (type_5 *)((int)var_5 + 1);
  var_35 = '\x01';
  if ((var_2[1] == 'e') && (var_2[2] == 'h')) {
    if (var_2[3] != '\0') {
      return false;
    }
    if ((int)var_1 - (int)var_6 < 8) {
      return false;
    }
    var_6 = (type_5 *)((int)var_5 + 9);
    var_35 = '\0';
    var_10 = var_2 + 3;
  }
  if (var_1 <= var_6) {
    return false;
  }
  while ((char)*var_6 < '\0') {
    var_6 = var_6 + 1;
    if (var_1 == var_6) {
      return false;
    }
  }
  var_7 = var_6 + 1;
  if (var_1 <= var_7) {
    return false;
  }
  var_29 = var_6[1];
  while ((char)var_29 < '\0') {
    var_7 = var_7 + 1;
    if (var_1 == var_7) {
      return false;
    }
    var_29 = *var_7;
  }
  var_6 = var_7 + 1;
  if (var_3 == 1) {
    if (var_1 == var_6 || (int)var_1 - (int)var_6 < 0) {
      return false;
    }
    var_9 = var_7 + 2;
  }
  else {
    if (var_1 <= var_6) {
      return false;
    }
    var_29 = var_7[1];
    while ((char)var_29 < '\0') {
      var_6 = var_6 + 1;
      if (var_1 == var_6) {
        return false;
      }
      var_29 = *var_6;
    }
    var_9 = var_6 + 1;
  }
  var_8 = *var_10;
  if (var_8 == 0x7a) {
    if (var_1 <= var_9) {
      return false;
    }
    while ((char)*var_9 < '\0') {
      var_9 = var_9 + 1;
      if (var_1 == var_9) {
        return false;
      }
    }
    var_8 = var_10[1];
    var_9 = var_9 + 1;
    if (var_8 != 0) {
      var_10 = var_10 + 1;
      var_3 = var_8;
      goto LAB_002210a7;
    }
LAB_002214ac:
    var_6 = "";
  }
  else {
    var_3 = var_8;
    if (var_8 == 0) goto LAB_002214ac;
LAB_002210a7:
    var_15 = (var_48<var_53,_gold::type_4*var_14> *)0xffffffff;
    var_8 = 0;
    do {
      if (var_3 == 0x50) {
        if (var_1 == var_9 || (int)var_1 - (int)var_9 < 0) {
          return false;
        }
        var_3 = *var_9;
        var_9 = var_9 + 1;
        if ((var_3 & 0x60) == 0x60) {
          return false;
        }
        var_11 = var_3 & 7;
        if (var_11 == 2) {
          var_13 = 2;
        }
        else {
          if (var_11 < 3) {
            if (var_11 != 0) {
              return false;
            }
          }
          else {
            if (var_11 == 3) {
              var_13 = 4;
              goto LAB_002213bf;
            }
            if (var_11 != 4) {
              return false;
            }
          }
          var_13 = 8;
        }
LAB_002213bf:
        var_12 = (int)var_1 - (int)var_9;
        if ((var_3 & 0xf0) == 0x50) {
          if (var_12 < (-var_13 & (type_3)(var_9 + ((var_13 - 1) - (int)var_2)))) {
            return false;
          }
          var_9 = var_9 + (-var_13 & (type_3)(var_9 + ((var_13 - 1) - (int)var_2)));
          var_12 = (int)var_1 - (int)var_9;
        }
        var_15 = (var_48<var_53,_gold::type_4*var_14> *var_14)((int)var_9 - (int)pcontents);
        if (var_12 < var_13) {
          return false;
        }
        var_9 = var_9 + var_13;
      }
      else {
        if (var_3 < 0x51) {
          if (var_3 != 0x4c) {
            return false;
          }
          if ((int)var_1 - (int)var_9 < 1) {
            return false;
          }
        }
        else {
          if (var_3 != 0x52) {
            if (var_3 != 0x53) {
              return false;
            }
            goto LAB_002210d9;
          }
          if (var_1 == var_9 || (int)var_1 - (int)var_9 < 0) {
            return false;
          }
          var_8 = *var_9;
          if (4 < (var_8 & 7)) {
            return false;
          }
          if ((1 << (var_8 & 7) & 0x1dU) == 0) {
            return false;
          }
        }
        var_9 = var_9 + 1;
      }
LAB_002210d9:
      var_10 = var_10 + 1;
      var_3 = *var_10;
    } while (var_3 != 0);
    if (var_15 == (var_48<var_53,_gold::type_4*> *)0xffffffff) goto LAB_002214ac;
    var_19 = var_16<64,var_17>::var_18(relocs,(type_9)(int)var_15);
    if (0 < var_19) {
      return false;
    }
    var_21 = var_16<64,var_17>::var_20(relocs);
    if (var_21 != (int)var_15) {
      return false;
    }
    var_13 = var_16<64,var_17>::var_22(relocs);
    if (var_13 == 0xffffffff) {
      return false;
    }
    var_12 = (*(object->super_Sized_relobj<64,var_17>).super_Relobj.super_Object._vptr_Object[0x23])
                      (object);
    if (var_13 < var_12) {
      var_35 = '\0';
      var_6 = "";
    }
    else {
      if (var_23 / 0x18 <= var_13) {
        return false;
      }
      if (var_24 <= *(type_3 *)(var_25 + var_13 * 0x18)) {
        return false;
      }
      var_6 = var_26 + *(type_3 *)(var_25 + var_13 * 0x18);
    }
    var_19 = var_16<64,var_17>::var_18(relocs,(type_9)((int)var_15 + 1));
    if (var_19 != 1) {
                    /* WARNING: Subroutine does not return */
      var_27("../../gold/ehframe.cc",0x3af,"read_cie");
    }
  }
  var_19 = var_16<64,var_17>::var_18(relocs,(type_9)((int)var_1 - (int)pcontents));
  if (0 < var_19) {
    return false;
  }
  var_7 = (type_5 *)0xffffffff;
  var_19 = (int)(var_2 + -8) - (int)pcontents;
  cie.object_ = (type_10 *)object;
  cie.shndx_ = shndx;
  cie.personality_name_._M_dataplus._M_p = (type_1)&cie.personality_name_.field_2;
  var_28 = var_6;
  if (var_6 != (type_5 *)0x0) {
    do {
      if (var_7 == (type_5 *)0x0) break;
      var_7 = var_7 + -1;
      var_29 = *var_28;
      var_28 = var_28 + (type_3)bVar15 * -2 + 1;
    } while (var_29 != '\0');
    var_7 = var_6 + (~(type_3)var_7 - 1);
  }
  cie.input_offset_ = var_19;
  cie.fde_encoding_ = var_8;
  std::__cxx11::basic_string<char,var_33::char_traits<char>,var_33::allocator<char>var_34>::
  var_30<var_31*>(&cie.personality_name_,var_6,var_7,0);
  cie.contents_._M_dataplus._M_p = (type_1)&cie.contents_.field_2;
  cie.fdes_.super__Vector_base<var_32::Fde*,var_33::allocator<var_32::Fde*>var_34>._M_impl._M_start =
       (type_1)0x0;
  cie.fdes_.super__Vector_base<var_32::Fde*,var_33::allocator<var_32::Fde*>var_34>._M_impl._M_finish =
       (type_1)0x0;
  cie.fdes_.super__Vector_base<var_32::Fde*,var_33::allocator<var_32::Fde*>var_34>._M_impl._M_end_of_storage =
       (type_1)0x0;
                    /* try { // try from 002212a1 to 002212a5 has its CatchHandler @ 00221595 */
  std::__cxx11::basic_string<char,var_33::char_traits<char>,var_33::allocator<char>var_34>::
  var_30<var_31*>(&cie.contents_,var_2,var_1,0);
  if (var_35 != '\0') {
    var_49._0_4_ = &cie;
    var_39::
    _Rb_tree<var_32::type_4*,_gold::type_4*,var_33::_Identity<var_32::type_4*>,_gold::var_36::Cie_less,var_33::allocator<var_32::type_4*>var_34>
    ::var_37(&(this->cie_offsets_)._M_t,(type_4 **)&var_49);
    if ((type_11 *)var_43 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {
      var_41 = (new_cies->
               super__Vector_base<var_39::var_48<var_32::type_4*var_14,var_38>,var_33::allocator<var_39::var_48<var_32::type_4*,var_38>var_34>var_34>var_14
               )._M_impl._M_finish;
      for (var_40 = (new_cies->
                     super__Vector_base<var_39::var_48<var_32::type_4*,var_38>,var_33::allocator<var_39::var_48<var_32::type_4*,var_38>var_34>var_34>var_14
                     )._M_impl._M_start; var_40 != var_41; var_40 = var_40 + 1) {
        var_44 = var_40->first;
        bVar4 = var_42==(var_44,&cie);
        if (bVar4) goto LAB_002212f4;
      }
    }
    else {
      var_44 = *(type_4 **)(var_43 + 0x10);
LAB_002212f4:
      if (var_44 != (type_4 *)0x0) {
                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */
        Relobj::var_45
                  ((type_10 *)object,&this->super_Output_section_data,shndx,var_19,
                   (int)var_1 - (int)(var_2 + -8),-1);
        goto LAB_0022131f;
      }
    }
  }
  var_44 = (type_4 *)var_46(0x4c);
                    /* try { // try from 002214d8 to 002214dc has its CatchHandler @ 00221591 */
  Cie::type_4(var_44,&cie);
  var_49._4_4_ = (type_4 *)var_47(var_49._5_3_,var_35);
  var_49._0_4_ = var_44;
                    /* try { // try from 002214f9 to 002214fd has its CatchHandler @ 0022158d */
  std::vector<var_39::var_48<var_32::type_4*,var_38>,var_33::allocator<var_39::var_48<var_32::type_4*,var_38>var_34>var_34>::
  emplace_back<var_39::var_48<var_32::type_4*,var_38>var_34>(new_cies,(var_48<var_32::type_4*,var_38> *var_14)&var_49);
LAB_0022131f:
  var_15 = (var_48<var_53,_gold::type_4*var_14> *var_14)&var_49;
  var_49._0_4_ = (type_4 *)(var_2 + -(int)pcontents);
  __in_chrg = local_8c;
  var_49._4_4_ = var_44;
  var_39::
  _Rb_tree<var_50,var_33::var_48<var_51,_gold::type_4*>,var_33::_Select1st<var_39::var_48<var_51,_gold::type_4*>var_34>,var_33::less<var_50>,var_33::allocator<var_39::var_48<var_51,_gold::type_4*>var_34>var_34>
  ::var_52<var_39::var_48<var_53,_gold::type_4*>var_34>(&cies->_M_t,var_15);
  Cie::~type_4(&cie,(int)__in_chrg);
  return true;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (number_literal)))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (number_literal)))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (while_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (char_literal (escape_sequence)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (while_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (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: (identifier)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))) consequence: (compound_statement (return_statement (number_literal)))) (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: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (while_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (while_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (char_literal (escape_sequence)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_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: (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (number_literal))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (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: (number_literal))) consequence: (compound_statement (return_statement (number_literal))))) 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))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (labeled_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: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))))))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))))) (expression_statement (assignment_expression left: (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: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (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: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal))))) alternative: (else_clause (compound_statement (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: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (number_literal)))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (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: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) 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 (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (identifier) right: (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (return_statement (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (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) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (for_statement initializer: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) condition: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) (number_literal) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (goto_statement label: (statement_identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (unary_expression argument: (identifier)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement (number_literal)))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */

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

{
  int *piVar1;
  int iVar2;
  byte bVar3;
  char cVar4;
  void *pvVar5;
  byte *pbVar6;
  int iVar7;
  int ***pppiVar8;
  uint uVar9;
  int **ppiVar10;
  byte bVar11;
  uint uVar12;
  byte *pbVar13;
  int iVar14;
  int extraout_EDX;
  int *piVar15;
  int ****ppppiVar16;
  byte *pbVar17;
  int ***pppiVar18;
  byte bVar19;
  longlong lVar20;
  int ***pppiStack_b0;
  undefined1 auStack_ac [4];
  int local_a8;
  int ***local_a4;
  int local_a0;
  int ***local_9c;
  char local_95;
  int **local_94;
  undefined **local_90;
  undefined1 local_8c [12];
  int local_80 [4];
  int **local_70;
  int **local_6c;
  int *local_68;
  undefined4 local_64;
  int local_60;
  undefined1 local_5c;
  undefined1 *local_58 [2];
  undefined1 local_50 [16];
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined1 *local_34 [2];
  undefined1 local_2c [28];
  
  bVar19 = 0;
  local_90 = &__DT_PLTGOT;
  if (param_10 == param_9 || (int)param_10 - (int)param_9 < 0) {
    return 0;
  }
  if ((*param_9 & 0xfd) != 1) {
    return 0;
  }
  pbVar17 = param_9 + 1;
  local_94._0_1_ = *param_9;
  pvVar5 = memchr(pbVar17,0,(int)param_10 - (int)pbVar17);
  if (pvVar5 == (void *)0x0) {
    return 0;
  }
  pbVar13 = (byte *)((int)pvVar5 + 1);
  local_95 = '\x01';
  if ((param_9[1] == 0x65) && (param_9[2] == 0x68)) {
    if (param_9[3] != 0) {
      return 0;
    }
    if ((int)param_10 - (int)pbVar13 < 8) {
      return 0;
    }
    pbVar13 = (byte *)((int)pvVar5 + 9);
    local_95 = '\0';
    pbVar17 = param_9 + 3;
  }
  if (param_10 <= pbVar13) {
    return 0;
  }
  while ((char)*pbVar13 < '\0') {
    pbVar13 = pbVar13 + 1;
    if (param_10 == pbVar13) {
      return 0;
    }
  }
  pbVar6 = pbVar13 + 1;
  if (param_10 <= pbVar6) {
    return 0;
  }
  bVar11 = pbVar13[1];
  while ((char)bVar11 < '\0') {
    pbVar6 = pbVar6 + 1;
    if (param_10 == pbVar6) {
      return 0;
    }
    bVar11 = *pbVar6;
  }
  pbVar13 = pbVar6 + 1;
  if ((byte)local_94 == 1) {
    if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {
      return 0;
    }
    pbVar13 = pbVar6 + 2;
  }
  else {
    if (param_10 <= pbVar13) {
      return 0;
    }
    bVar11 = pbVar6[1];
    while ((char)bVar11 < '\0') {
      pbVar13 = pbVar13 + 1;
      if (param_10 == pbVar13) {
        return 0;
      }
      bVar11 = *pbVar13;
    }
    pbVar13 = pbVar13 + 1;
  }
  local_94._0_1_ = *pbVar17;
  if ((byte)local_94 == 0x7a) {
    if (param_10 <= pbVar13) {
      return 0;
    }
    while ((char)*pbVar13 < '\0') {
      pbVar13 = pbVar13 + 1;
      if (param_10 == pbVar13) {
        return 0;
      }
    }
    local_94._0_1_ = pbVar17[1];
    pbVar13 = pbVar13 + 1;
    if ((byte)local_94 != 0) {
      pbVar17 = pbVar17 + 1;
      bVar11 = (byte)local_94;
      goto LAB_002210a7;
    }
LAB_002214ac:
    pppiVar8 = (int ***)((int)local_90 + -0x102e4a);
  }
  else {
    bVar11 = (byte)local_94;
    if ((byte)local_94 == 0) goto LAB_002214ac;
LAB_002210a7:
    local_9c = (int ***)0xffffffff;
    local_94._0_1_ = 0;
    do {
      if (bVar11 == 0x50) {
        if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {
          return 0;
        }
        bVar11 = *pbVar13;
        pbVar13 = pbVar13 + 1;
        if ((bVar11 & 0x60) == 0x60) {
          return 0;
        }
        bVar3 = bVar11 & 7;
        if (bVar3 == 2) {
          uVar9 = 2;
        }
        else {
          if (bVar3 < 3) {
            if (bVar3 != 0) {
              return 0;
            }
          }
          else {
            if (bVar3 == 3) {
              uVar9 = 4;
              goto LAB_002213bf;
            }
            if (bVar3 != 4) {
              return 0;
            }
          }
          uVar9 = 8;
        }
LAB_002213bf:
        uVar12 = (int)param_10 - (int)pbVar13;
        if ((bVar11 & 0xf0) == 0x50) {
          if (uVar12 < (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)))) {
            return 0;
          }
          pbVar13 = pbVar13 + (-uVar9 & (uint)(pbVar13 + ((uVar9 - 1) - (int)param_9)));
          uVar12 = (int)param_10 - (int)pbVar13;
        }
        local_9c = (int ***)((int)pbVar13 - param_8);
        if (uVar12 < uVar9) {
          return 0;
        }
        pbVar13 = pbVar13 + uVar9;
      }
      else {
        if (bVar11 < 0x51) {
          if (bVar11 != 0x4c) {
            return 0;
          }
          if ((int)param_10 - (int)pbVar13 < 1) {
            return 0;
          }
        }
        else {
          if (bVar11 != 0x52) {
            if (bVar11 != 0x53) {
              return 0;
            }
            goto LAB_002210d9;
          }
          if (param_10 == pbVar13 || (int)param_10 - (int)pbVar13 < 0) {
            return 0;
          }
          local_94._0_1_ = *pbVar13;
          if (4 < ((byte)local_94 & 7)) {
            return 0;
          }
          if ((1 << ((byte)local_94 & 7) & 0x1dU) == 0) {
            return 0;
          }
        }
        pbVar13 = pbVar13 + 1;
      }
LAB_002210d9:
      pbVar17 = pbVar17 + 1;
      bVar11 = *pbVar17;
    } while (bVar11 != 0);
    if (local_9c == (int ***)0xffffffff) goto LAB_002214ac;
    local_a0 = (int)local_9c >> 0x1f;
    local_a4 = local_9c;
    iVar7 = FUN_001b4510(param_11,local_9c,local_a0);
    if (0 < iVar7) {
      return 0;
    }
    lVar20 = FUN_001b4420(param_11);
    if (lVar20 != CONCAT44(local_a0,local_9c)) {
      return 0;
    }
    pppiStack_b0 = (int ***)FUN_001b4450(param_11);
    if (pppiStack_b0 == (int ***)0xffffffff) {
      return 0;
    }
    pppiVar8 = (int ***)(**(code **)(*param_2 + 0x8c))(param_2);
    if (pppiStack_b0 < pppiVar8) {
      local_95 = '\0';
      local_a4 = (int ***)((int)local_90 + -0x102e4a);
    }
    else {
      if ((int ***)(param_5 / 0x18) <= pppiStack_b0) {
        return 0;
      }
      pppiStack_b0 = (int ***)((int)pppiStack_b0 * 0x18);
      if (param_7 <= *(uint *)((int)pppiStack_b0 + param_4)) {
        return 0;
      }
      local_a4 = (int ***)(*(uint *)((int)pppiStack_b0 + param_4) + param_6);
    }
    iVar7 = FUN_001b4510(param_11,(int)local_9c + 1,(int)local_9c + 1 >> 0x1f);
    pppiVar8 = local_a4;
    if (iVar7 != 1) {
      pppiStack_b0 = (int ***)(uint)(byte)local_94;
                    /* WARNING: Subroutine does not return */
      FUN_000da200((int)local_90 + -0x102679,0x3af,local_90 + -0x40969);
    }
  }
  pppiVar18 = (int ***)(param_10 + -param_8);
  local_9c = pppiVar8;
  iVar7 = FUN_001b4510(param_11,pppiVar18,(int)pppiVar18 >> 0x1f);
  if (0 < iVar7) {
    return 0;
  }
  local_5c = (byte)local_94;
  pbVar17 = (byte *)0xffffffff;
  local_a4 = (int ***)(param_9 + -8);
  iVar7 = (int)local_a4 - param_8;
  local_68 = param_2;
  local_64 = param_3;
  local_94 = (int **)local_50;
  pppiVar8 = local_9c;
  if (local_9c != (int ***)0x0) {
    do {
      pppiVar18 = pppiVar8;
      if (pbVar17 == (byte *)0x0) break;
      pbVar17 = pbVar17 + -1;
      pppiVar18 = (int ***)((int)pppiVar8 + (uint)bVar19 * -2 + 1);
      bVar11 = *(byte *)pppiVar8;
      pppiVar8 = pppiVar18;
    } while (bVar11 != 0);
    pbVar17 = (byte *)((int)local_9c + (~(uint)pbVar17 - 1));
  }
  pppiStack_b0 = (int ***)0x0;
  local_60 = iVar7;
  local_58[0] = (undefined1 *)local_94;
  FUN_000a8880(local_58,local_9c,pbVar17);
  local_34[0] = local_2c;
  local_40 = 0;
  pppiStack_b0 = (int ***)0x0;
  local_3c = 0;
  local_38 = 0;
                    /* try { // try from 002212a1 to 002212a5 has its CatchHandler @ 00221595 */
  FUN_000a8880(local_34,param_9,param_10);
  local_94 = &local_68;
  ppppiVar16 = (int ****)auStack_ac;
  iVar2 = local_a8;
  if (local_95 != '\0') {
    local_9c = &local_70;
    pppiStack_b0 = pppiVar18;
    local_70 = local_94;
    FUN_0021b4b0(local_80,param_1 + 0x30,local_9c);
    iVar14 = param_1 + 0x34;
    if (local_80[0] == iVar14) {
      piVar1 = (int *)param_13[1];
      iVar2 = local_a8;
      for (piVar15 = (int *)*param_13; local_a8 = iVar7, ppppiVar16 = &pppiStack_b0,
          piVar15 != piVar1; piVar15 = piVar15 + 2) {
        ppiVar10 = (int **)*piVar15;
        cVar4 = FUN_0021a660(ppiVar10,local_94);
        iVar14 = extraout_EDX;
        iVar7 = local_a8;
        if (cVar4 != '\0') goto LAB_002212f4;
        iVar2 = local_a8;
      }
    }
    else {
      ppiVar10 = *(int ***)(local_80[0] + 0x10);
LAB_002212f4:
      ppppiVar16 = &pppiStack_b0;
      iVar2 = local_a8;
      if (ppiVar10 != (int **)0x0) {
                    /* try { // try from 00221317 to 002214cc has its CatchHandler @ 0022158d */
        FUN_00121dd0(param_2,param_1,param_3,iVar7,(int)param_10 - (int)local_a4,0xffffffff,iVar14,
                     iVar14);
        ppppiVar16 = &pppiStack_b0;
        goto LAB_0022131f;
      }
    }
  }
  local_a8 = iVar2;
  ppppiVar16[-4] = (int ***)0x4c;
  ppppiVar16[-5] = (int ***)0x2214cd;
  ppiVar10 = (int **)FUN_00246670();
  ppppiVar16[-3] = (int ***)local_94;
  ppppiVar16[-4] = (int ***)ppiVar10;
                    /* try { // try from 002214d8 to 002214dc has its CatchHandler @ 00221591 */
  ppppiVar16[-5] = (int ***)0x2214dd;
  FUN_0021dba0();
  local_6c = (int **)CONCAT31(local_6c._1_3_,local_95);
  local_9c = &local_70;
  ppppiVar16[-3] = local_9c;
  ppppiVar16[-4] = (int ***)param_13;
                    /* try { // try from 002214f9 to 002214fd has its CatchHandler @ 0022158d */
  ppppiVar16[-5] = (int ***)0x2214fe;
  local_70 = ppiVar10;
  FUN_0021fa00();
LAB_0022131f:
  local_70 = (int **)(param_9 + -param_8);
  *(int ****)((int)ppppiVar16 + -8) = local_9c;
  *(undefined4 *)((int)ppppiVar16 + -0xc) = param_12;
  *(undefined1 **)((int)ppppiVar16 + -0x10) = local_8c;
  *(undefined4 *)((int)ppppiVar16 + -0x14) = 0x221343;
  local_6c = ppiVar10;
  FUN_0021ef70();
  *(int ***)((int)ppppiVar16 + -0x14) = local_94;
  *(undefined4 *)((int)ppppiVar16 + -0x18) = 0x22134e;
  FUN_0021a270();
  return 1;
}

