
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: off_t finalize(Layout * this, Input_objects * input_objects,
   Symbol_table * symtab, Target * target, Task * task) */

off_t __thiscall
gold::Layout::finalize
          (Layout *this,Input_objects *input_objects,Symbol_table *symtab,Target *target,Task *task)

{
  byte *pbVar1;
  byte bVar2;
  _func_int_varargs *p_Var3;
  Output_section *pOVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  char cVar9;
  General_options *this_00;
  Object_format OVar10;
  Output_segment *this_01;
  Symbol *this_02;
  Output_section *pOVar11;
  Script_options *pSVar12;
  uint uVar13;
  Output_data *od;
  code *pcVar14;
  int extraout_ECX;
  int iVar15;
  uint uVar16;
  Output_segment *pOVar17;
  int iVar18;
  pointer ppOVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  int iVar23;
  int unaff_EDI;
  off_t oVar24;
  longlong lVar25;
  Symbol_table *__in_chrg;
  Parameters *in_stack_ffffff34;
  Parameters *in_stack_ffffff38;
  Output_data **local_b0;
  int local_a4;
  int local_a0;
  undefined8 local_9c;
  Output_file_header *local_94;
  Output_segment *local_90;
  Output_segment_headers *local_8c;
  int local_88;
  Output_segment *local_80;
  uint local_dynamic_count;
  uint forced_local_dynamic_count;
  Output_section *dynstr;
  uint shndx;
  pointer local_64;
  pointer local_60;
  off_t off;
  
  __x86_get_pc_thunk_di();
  local_dynamic_count = 0;
  forced_local_dynamic_count = 0;
  if (*(code **)(*(int *)target + 0x10) != (code *)(unaff_EDI + 0x1137)) {
    (**(code **)(*(int *)target + 0x10))(target,this,input_objects,symtab);
  }
  count_local_symbols(this,task,input_objects);
  link_stabs_sections(this);
  pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;
  iVar23 = *(int *)pbVar1;
  if (*(int *)(iVar23 + 8) == 0) goto LAB_00088477;
  if (*(char *)(*(int *)(iVar23 + 8) + 0x318d) == '\0') {
    if (*(char *)(iVar23 + 0x10) == '\0') goto LAB_00088c31;
    if (*(char *)(iVar23 + 0x11) == '\0') {
      pSVar12 = this->script_options_;
      if (((pSVar12->script_sections_).saw_sections_clause_ == false) ||
         (local_90 = (Output_segment *)0x0,
         (pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)) {
        local_90 = make_output_segment(this,6,4);
        pSVar12 = this->script_options_;
      }
      shndx = 0;
      local_64 = (pointer)0x0;
      local_60 = (pointer)0x0;
                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */
      Versions::Versions((Versions *)&off,&pSVar12->version_script_info_,&this->dynpool_);
                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */
      create_dynamic_symtab
                (this,input_objects,symtab,&dynstr,&local_dynamic_count,&forced_local_dynamic_count,
                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,(Versions *)&off);
      iVar23 = *(int *)(*(int *)pbVar1 + 8);
      if (iVar23 == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */
        do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));
      }
      if (((*(char *)(iVar23 + 0x1a25) == '\0') || (*(int *)(iVar23 + 0x1f64) != 0)) &&
         (this->interp_segment_ == (Output_segment *)0x0)) {
                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */
        create_interp(this,target);
      }
      finish_dynamic_section(this,input_objects,symtab);
      Stringpool_template<char>::set_string_offsets(&this->dynpool_);
      create_version_sections
                (this,(Versions *)&off,symtab,forced_local_dynamic_count + local_dynamic_count,
                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,dynstr);
      __in_chrg = symtab;
      set_dynamic_symbol_size(this,symtab);
      Versions::~Versions((Versions *)&off,(int)__in_chrg);
      if (shndx != 0) {
        operator_delete((void *)shndx);
      }
      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;
      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {
        local_8c = (Output_segment_headers *)0x0;
        goto LAB_00087db2;
      }
    }
    else {
      local_90 = (Output_segment *)0x0;
    }
    local_8c = (Output_segment_headers *)operator_new(0x24);
                    /* try { // try from 00088b86 to 00088b8a has its CatchHandler @ 00088ca5 */
    Output_segment_headers::Output_segment_headers(local_8c,&this->segment_list_);
  }
  else {
    local_90 = (Output_segment *)0x0;
    local_8c = (Output_segment_headers *)0x0;
  }
LAB_00087db2:
  local_94 = (Output_file_header *)operator_new(0x34);
                    /* try { // try from 00087dda to 00087dde has its CatchHandler @ 00088cac */
  Output_file_header::Output_file_header(local_94,target,symtab,local_8c);
  off = CONCAT44(off._4_4_,local_94);
  local_b0 = (Output_data **)&off;
  std::vector<gold::Output_data*,_std::allocator<gold::Output_data*>_>::
  emplace_back<gold::Output_data*>(&this->special_output_list_,local_b0);
  if (local_8c != (Output_segment_headers *)0x0) {
    off = CONCAT44(off._4_4_,local_8c);
    std::vector<gold::Output_data*,_std::allocator<gold::Output_data*>_>::
    emplace_back<gold::Output_data*>(&this->special_output_list_,local_b0);
  }
  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {
    iVar23 = *(int *)pbVar1;
    iVar15 = *(int *)(iVar23 + 8);
    if (iVar15 != 0) goto LAB_00087e3a;
LAB_00088adb:
    pcVar14 = *(code **)(*(int *)target + 0x68);
    if (pcVar14 == (code *)(unaff_EDI + 0x1497)) {
LAB_00088477:
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));
    }
LAB_00088af4:
    cVar9 = (*pcVar14)(target);
LAB_00087e60:
    if (cVar9 == '\0') goto LAB_00087e72;
  }
  else {
    place_orphan_sections_in_script(this);
    iVar23 = *(int *)pbVar1;
    iVar15 = *(int *)(iVar23 + 8);
    if (iVar15 == 0) goto LAB_00088adb;
LAB_00087e3a:
    if ((*(byte *)(iVar23 + 0x14) & 8) == 0) {
      pcVar14 = *(code **)(*(int *)target + 0x68);
      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;
      cVar9 = *(char *)(iVar15 + 0x3209);
      goto LAB_00087e60;
    }
  }
  prepare_for_relaxation(this);
LAB_00087e72:
  local_88 = 0;
LAB_00087e80:
  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {
    this_00 = *(General_options **)(*(int *)pbVar1 + 8);
    if (this_00 == (General_options *)0x0) goto LAB_00088477;
    local_80 = (Output_segment *)0x0;
    if ((this_00->relocatable_).value == false) {
      local_80 = find_first_load_seg(this,target);
      goto LAB_00088944;
    }
  }
  else {
    local_80 = set_section_addresses_from_script(this,symtab);
LAB_00088944:
    this_00 = *(General_options **)(*(int *)pbVar1 + 8);
    if (this_00 == (General_options *)0x0) goto LAB_00088477;
  }
  OVar10 = General_options::oformat_enum(this_00);
  this_01 = (Output_segment *)0x0;
  if (OVar10 == OBJECT_FORMAT_ELF) {
    this_01 = local_80;
  }
  iVar23 = *(int *)(*(int *)pbVar1 + 8);
  if (iVar23 != 0) {
    iVar15 = *(int *)(target + 4);
    if (*(char *)(iVar15 + 0x30) == '\0') {
      if (*(char *)(iVar23 + 0x41b8) != '\0') {
        local_9c = *(undefined8 *)(iVar23 + 0x5218);
        if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {
          local_9c = *(undefined8 *)(iVar15 + 0x20);
        }
        lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x41bc),*(undefined4 *)(iVar23 + 0x41c0),
                           (int)local_9c,local_9c._4_4_);
        goto joined_r0x0008887a;
      }
    }
    else if (*(char *)(iVar23 + 0x423c) != '\0') {
      local_9c = *(undefined8 *)(iVar23 + 0x5218);
      if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {
        local_9c = *(undefined8 *)(iVar15 + 0x20);
      }
      lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x4240),*(undefined4 *)(iVar23 + 0x4244),
                         (int)local_9c,local_9c._4_4_);
joined_r0x0008887a:
      if (lVar25 != 0) {
        cVar9 = *(char *)(iVar23 + 0x318d);
        pOVar17 = (Output_segment *)0x0;
        goto LAB_00087f2e;
      }
    }
    pOVar17 = local_90;
    if ((local_90 != (Output_segment *)0x0) && (this_01 == (Output_segment *)0x0)) {
      if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xaef,(char *)(unaff_EDI + 0x19c44f));
      }
      cVar9 = *(char *)(iVar23 + 0x318d);
      goto LAB_00087f2e;
    }
    cVar9 = *(char *)(iVar23 + 0x318d);
    if (this_01 == (Output_segment *)0x0) goto LAB_00087f2e;
    local_80 = this_01;
    if (((this_01->field_0x19c & 2) == 0) ||
       ((this->script_options_->script_sections_).saw_sections_clause_ != false)) {
      if (cVar9 != '\0') goto LAB_000887ba;
      goto LAB_00087f39;
    }
    if (cVar9 != '\0') goto LAB_000887ba;
    if ((((local_94->super_Output_data).field_0x1c & 2) == 0) &&
       ((*(local_94->super_Output_data)._vptr_Output_data[0xe])(local_94),
       ((local_94->super_Output_data).field_0x1c & 2) == 0)) {
LAB_00088c5f:
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0x163,(char *)(unaff_EDI + 0x19c43b));
    }
    if (((local_8c->super_Output_data).field_0x1c & 2) == 0) {
      (*(local_8c->super_Output_data)._vptr_Output_data[0xe])(local_8c);
      if (((local_8c->super_Output_data).field_0x1c & 2) == 0) goto LAB_00088c5f;
      if (((local_94->super_Output_data).field_0x1c & 2) == 0) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0xcf,(char *)(unaff_EDI + 0x19c68f));
      }
    }
    uVar22 = (int)(local_94->super_Output_data).data_size_ +
             (int)(local_8c->super_Output_data).data_size_;
    iVar23 = *(int *)(*(int *)pbVar1 + 8);
    if (iVar23 == 0) {
                    /* WARNING: Subroutine does not return */
      Target::abi_pagesize((Target *)in_stack_ffffff34);
    }
    local_a0 = *(int *)(iVar23 + 0x521c);
    local_a4 = *(int *)(iVar23 + 0x5218);
    if (local_a0 == 0 && local_a4 == 0) {
      local_a0 = *(int *)(*(int *)(target + 4) + 0x24);
      local_a4 = *(int *)(*(int *)(target + 4) + 0x20);
    }
    uVar5 = (uint)this_01->paddr_;
    uVar6 = *(uint *)((int)&this_01->paddr_ + 4);
    uVar20 = uVar5 - uVar22 & -local_a4;
    uVar21 = uVar6 - (uVar5 < uVar22) & -(local_a0 + (uint)(local_a4 != 0));
    uVar13 = uVar5 - uVar20;
    uVar16 = (uVar6 - uVar21) - (uint)(uVar5 < uVar20);
    cVar9 = *(char *)(iVar23 + 0x318d);
    if (uVar16 <= uVar6 && (uint)(uVar5 < uVar13) <= uVar6 - uVar16) {
      uVar7 = *(uint *)((int)&this_01->vaddr_ + 4);
      uVar8 = (uint)this_01->vaddr_;
      if (uVar16 <= uVar7 && (uint)(uVar8 < uVar13) <= uVar7 - uVar16) {
        *(uint *)&this_01->paddr_ = uVar20;
        *(uint *)&this_01->vaddr_ = (uVar8 - uVar5) + uVar20;
        *(uint *)((int)&this_01->vaddr_ + 4) =
             ((uVar7 - uVar6) - (uint)(uVar8 < uVar5)) + uVar21 + (uint)CARRY4(uVar8 - uVar5,uVar20)
        ;
        this_01->field_0x19c = this_01->field_0x19c | 2;
        *(uint *)((int)&this_01->paddr_ + 4) = uVar21;
        iVar23 = uVar16 - (uVar13 < uVar22);
        if (cVar9 != '\0') goto LAB_000887ba;
        if (uVar13 - uVar22 == 0 && iVar23 == 0) goto LAB_0008878f;
        if (this_01 == (Output_segment *)0x0) goto LAB_0008878f;
        od = (Output_data *)operator_new(0x2c);
        *(undefined4 *)&od->address_ = 0;
        *(uint *)&od->data_size_ = uVar13 - uVar22;
        bVar2 = od->field_0x1c;
        *(undefined4 *)((int)&od->address_ + 4) = 0;
        od[1]._vptr_Output_data = (_func_int_varargs **)0x0;
        *(undefined4 *)&od[1].address_ = 1;
        od->field_0x1c = bVar2 & 0xe0 | 10;
        *(undefined4 *)((int)&od[1].address_ + 4) = 0;
        *(int *)((int)&od->data_size_ + 4) = iVar23;
        *(undefined4 *)&od->offset_ = 0xffffffff;
        *(undefined4 *)((int)&od->offset_ + 4) = 0xffffffff;
        od->_vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2759db);
        Output_segment::add_initial_output_data(this_01,od);
        goto LAB_0008878f;
      }
    }
    if (cVar9 != '\0') goto LAB_00087f7a;
    local_80 = (Output_segment *)0x0;
LAB_00087f52:
    if (pOVar17 != (Output_segment *)0x0) goto LAB_00087f5a;
    pSVar12 = this->script_options_;
    if ((pSVar12->script_sections_).saw_sections_clause_ != false) goto LAB_00087f99;
LAB_00087fc3:
    iVar15 = local_88;
    shndx = 1;
    if (*(char *)(iVar23 + 0x318d) == '\0') {
      oVar24 = set_segment_offsets(this,target,local_80,&shndx);
      iVar23 = *(int *)pbVar1;
      iVar18 = *(int *)(iVar23 + 8);
      if (iVar18 == 0) goto LAB_000888c2;
LAB_00087ff2:
      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) {
        if (local_88 == 0) {
          Relaxation_debug_check::read_sections(this->relaxation_debug_check_,&this->section_list_);
        }
        else {
          Relaxation_debug_check::verify_sections
                    (this->relaxation_debug_check_,&this->section_list_);
        }
        iVar23 = *(int *)pbVar1;
        iVar18 = *(int *)(iVar23 + 8);
        if (iVar18 == 0) goto LAB_000888c2;
      }
      off = oVar24;
      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) goto LAB_00088970;
      pcVar14 = *(code **)(*(int *)target + 0x68);
      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;
      if ((*(char *)(iVar18 + 0x3209) != '\0') &&
         (pcVar14 = *(code **)(*(int *)target + 0x6c), pcVar14 != (code *)(unaff_EDI + 0x1147)))
      goto LAB_00088910;
    }
    else {
      oVar24 = set_relocatable_section_offsets(this,&local_94->super_Output_data,&shndx);
      iVar23 = *(int *)pbVar1;
      iVar18 = *(int *)(iVar23 + 8);
      if (iVar18 != 0) goto LAB_00087ff2;
LAB_000888c2:
      off = oVar24;
      pcVar14 = *(code **)(*(int *)target + 0x68);
      if (pcVar14 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;
LAB_000888db:
      cVar9 = (*pcVar14)(target);
      if (cVar9 != '\0') {
        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {
          pcVar14 = *(code **)(*(int *)target + 0x6c);
          if (pcVar14 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;
LAB_00088910:
          local_88 = local_88 + 1;
          cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this);
        }
        else {
LAB_00088970:
          local_88 = local_88 + 1;
          cVar9 = local_88 < 2;
        }
        local_88 = iVar15 + 1;
        if (cVar9 != '\0') {
          clean_up_after_relaxation(this);
          goto LAB_00087e80;
        }
      }
    }
LAB_00088098:
    local_88 = iVar15 + 1;
    this_02 = Symbol_table::lookup(symtab,(char *)(unaff_EDI + 0x19b53f),(char *)0x0);
    if ((this_02 != (Symbol *)0x0) && ((this_02->field_0x2c & 4) != 0)) {
      if (local_80 == (Output_segment *)0x0) {
        Symbol::set_undefined(this_02);
      }
      else {
        Symbol::set_output_segment(this_02,local_80,SEGMENT_START);
      }
    }
    off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);
    ppOVar19 = (this->unattached_section_list_).
               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.
               _M_impl._M_start;
    uVar22 = shndx;
    if ((this->unattached_section_list_).
        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.
        _M_finish != ppOVar19) {
      do {
        while (pOVar11 = *ppOVar19, pOVar11->out_shndx_ == 0xffffffff) {
          p_Var3 = (pOVar11->super_Output_data)._vptr_Output_data[0xc];
          if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {
            pOVar11->out_shndx_ = uVar22;
          }
          else {
            (*p_Var3)(pOVar11,uVar22);
          }
          uVar22 = uVar22 + 1;
          ppOVar19 = ppOVar19 + 1;
          if ((this->unattached_section_list_).
              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.
              _M_impl._M_finish == ppOVar19) goto LAB_00088157;
        }
        ppOVar19 = ppOVar19 + 1;
      } while ((this->unattached_section_list_).
               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.
               _M_impl._M_finish != ppOVar19);
    }
LAB_00088157:
    shndx = uVar22;
    create_symtab_sections(this,input_objects,symtab,uVar22,(off_t *)local_b0,local_dynamic_count);
    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {
      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {
        assign_local_dynsym_offsets(this,input_objects);
      }
      Script_options::finalize_symbols(this->script_options_,symtab,this);
      if (this->incremental_inputs_ != (Incremental_inputs *)0x0) {
        Incremental_inputs::finalize(this->incremental_inputs_);
        create_incremental_info_sections(this,symtab);
      }
      pOVar11 = create_shstrtab(this);
      off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);
      ppOVar19 = (this->unattached_section_list_).
                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.
                 _M_impl._M_start;
      uVar22 = shndx;
      if (ppOVar19 ==
          (this->unattached_section_list_).
          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.
          _M_finish) goto LAB_00088259;
      goto LAB_0008822e;
    }
LAB_00088c31:
    cVar9 = Parameters::doing_static_link(in_stack_ffffff34,in_stack_ffffff38);
    iVar23 = extraout_ECX;
    pOVar17 = local_90;
LAB_00087f2e:
    if (cVar9 == '\0') {
      local_80 = (Output_segment *)0x0;
LAB_00087f39:
      if (local_8c == (Output_segment_headers *)0x0) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f));
      }
      if (local_80 == (Output_segment *)0x0) goto LAB_00087f52;
LAB_0008878f:
      Output_segment::add_initial_output_data(local_80,&local_8c->super_Output_data);
      if (pOVar17 != (Output_segment *)0x0) {
LAB_00087f5a:
        Output_segment::add_initial_output_data(pOVar17,&local_8c->super_Output_data);
        if (local_80 == (Output_segment *)0x0) goto LAB_00087f7a;
      }
LAB_000887ba:
      Output_segment::add_initial_output_data(local_80,&local_94->super_Output_data);
      iVar23 = *(int *)(*(int *)pbVar1 + 8);
    }
    else {
LAB_00087f7a:
      local_80 = (Output_segment *)0x0;
      iVar23 = *(int *)(*(int *)pbVar1 + 8);
    }
    pSVar12 = this->script_options_;
    if ((pSVar12->script_sections_).saw_sections_clause_ == false) goto LAB_00088468;
LAB_00087f99:
    if ((pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0) goto LAB_00088468;
    if (iVar23 != 0) goto code_r0x00087faf;
  }
  goto LAB_00088477;
LAB_0008822e:
  pOVar4 = *ppOVar19;
  if (pOVar4->out_shndx_ == 0xffffffff) {
    p_Var3 = (pOVar4->super_Output_data)._vptr_Output_data[0xc];
    if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {
      pOVar4->out_shndx_ = uVar22;
    }
    else {
      (*p_Var3)(pOVar4,uVar22);
    }
    uVar22 = uVar22 + 1;
    ppOVar19 = ppOVar19 + 1;
    if ((this->unattached_section_list_).
        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.
        _M_finish == ppOVar19) goto LAB_00088259;
    goto LAB_0008822e;
  }
  ppOVar19 = ppOVar19 + 1;
  if ((this->unattached_section_list_).
      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.
      _M_finish == ppOVar19) {
LAB_00088259:
    shndx = uVar22;
    create_shdrs(this,pOVar11,(off_t *)local_b0);
    if (this->any_postprocessing_sections_ == false) {
      off = set_section_offsets(this,off,POSTPROCESSING_SECTIONS_PASS);
      off = set_section_offsets(this,off,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);
    }
    Output_file_header::set_section_info(local_94,this->section_headers_,pOVar11);
    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;
    *(undefined4 *)((int)&this->output_file_size_ + 4) = off._4_4_;
    *(undefined4 *)&this->output_file_size_ = (undefined4)off;
    return off;
  }
  goto LAB_0008822e;
code_r0x00087faf:
  if (*(char *)(iVar23 + 0x318d) == '\0') {
    Script_sections::put_headers_in_phdrs
              (&pSVar12->script_sections_,&local_94->super_Output_data,&local_8c->super_Output_data)
    ;
    iVar23 = *(int *)(*(int *)pbVar1 + 8);
LAB_00088468:
    shndx = 1;
    if (iVar23 == 0) goto LAB_00088477;
  }
  goto LAB_00087fc3;
}



void FUN_00087d20(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5)

{
  byte *pbVar1;
  int *piVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  char cVar7;
  int iVar8;
  int iVar9;
  undefined4 uVar10;
  uint uVar11;
  int *piVar12;
  code *pcVar13;
  uint uVar14;
  int extraout_ECX;
  uint uVar15;
  int iVar16;
  uint uVar17;
  uint uVar18;
  int unaff_EDI;
  undefined8 uVar19;
  longlong lVar20;
  undefined8 *local_b0;
  int local_a4;
  int local_a0;
  int local_9c;
  int local_98;
  int *local_94;
  int local_90;
  int *local_8c;
  int local_88;
  int local_80;
  int local_74;
  int local_70;
  undefined4 local_6c;
  int local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined8 local_5c;
  
  FUN_0004fb7e();
  local_74 = 0;
  local_70 = 0;
  if (*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)) {
    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);
  }
  FUN_0007d2c0(param_1,param_5,param_2);
  FUN_00082750(param_1);
  pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;
  iVar9 = *(int *)pbVar1;
  uVar19 = local_5c;
  if (*(int *)(iVar9 + 8) == 0) goto LAB_00088477;
  if (*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0') {
    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;
    if (*(char *)(iVar9 + 0x11) == '\0') {
      iVar9 = *(int *)(param_1 + 4);
      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {
        local_90 = FUN_0007f710(param_1,6,4);
        iVar9 = *(int *)(param_1 + 4);
      }
      local_68 = 0;
      local_64 = 0;
      local_60 = 0;
                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */
      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);
                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */
      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);
      iVar9 = *(int *)(*(int *)pbVar1 + 8);
      if (iVar9 == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */
        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);
      }
      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&
         (*(int *)(param_1 + 0x16c) == 0)) {
                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */
        FUN_00086960(param_1,param_4);
      }
      FUN_000817a0(param_1,param_2,param_3);
      FUN_001215b0(param_1 + 0xa0);
      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);
      FUN_0007d800(param_1,param_3);
      FUN_001459e0(&local_5c);
      if (local_68 != 0) {
        FUN_001807a0(local_68);
      }
      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);
      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;
      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {
        local_8c = (int *)0x0;
        goto LAB_00087db2;
      }
    }
    else {
      local_90 = 0;
    }
    local_8c = (int *)FUN_0017ebf0(0x24);
                    /* try { // try from 00088b86 to 00088b8a has its CatchHandler @ 00088ca5 */
    FUN_000ba6d0(local_8c,param_1 + 0x124);
  }
  else {
    local_90 = 0;
    local_8c = (int *)0x0;
  }
LAB_00087db2:
  local_94 = (int *)FUN_0017ebf0(0x34);
                    /* try { // try from 00087dda to 00087dde has its CatchHandler @ 00088cac */
  FUN_000ba800(local_94,param_4,param_3,local_8c);
  local_b0 = &local_5c;
  local_5c._0_4_ = local_94;
  FUN_0008a170(param_1 + 0x148,local_b0);
  if (local_8c != (int *)0x0) {
    local_5c._0_4_ = local_8c;
    FUN_0008a170(param_1 + 0x148,local_b0);
  }
  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {
    iVar9 = *(int *)pbVar1;
    iVar8 = *(int *)(iVar9 + 8);
    if (iVar8 != 0) goto LAB_00087e3a;
LAB_00088adb:
    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);
    pcVar13 = *(code **)(*param_4 + 0x68);
    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {
LAB_00088477:
      local_5c = uVar19;
                    /* WARNING: Subroutine does not return */
      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);
    }
LAB_00088af4:
    cVar7 = (*pcVar13)(param_4);
LAB_00087e60:
    if (cVar7 == '\0') goto LAB_00087e72;
  }
  else {
    FUN_0007d230(param_1);
    iVar9 = *(int *)pbVar1;
    iVar8 = *(int *)(iVar9 + 8);
    if (iVar8 == 0) goto LAB_00088adb;
LAB_00087e3a:
    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {
      pcVar13 = *(code **)(*param_4 + 0x68);
      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;
      cVar7 = *(char *)(iVar8 + 0x3209);
      goto LAB_00087e60;
    }
  }
  FUN_00083a60(param_1);
LAB_00087e72:
  local_88 = 0;
LAB_00087e80:
  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {
    iVar9 = *(int *)(*(int *)pbVar1 + 8);
    uVar19 = local_5c;
    if (iVar9 == 0) goto LAB_00088477;
    local_80 = 0;
    if (*(char *)(iVar9 + 0x318d) == '\0') {
      local_80 = FUN_00081670(param_1,param_4);
      uVar19 = local_5c;
      goto LAB_00088944;
    }
  }
  else {
    local_80 = FUN_0007d1e0(param_1,param_3);
    uVar19 = local_5c;
LAB_00088944:
    iVar9 = *(int *)(*(int *)pbVar1 + 8);
    if (iVar9 == 0) goto LAB_00088477;
  }
  local_5c = uVar19;
  iVar8 = FUN_000aa690(iVar9);
  iVar9 = 0;
  if (iVar8 == 0) {
    iVar9 = local_80;
  }
  iVar8 = *(int *)(*(int *)pbVar1 + 8);
  uVar19 = local_5c;
  if (iVar8 != 0) {
    iVar16 = param_4[1];
    if (*(char *)(iVar16 + 0x30) == '\0') {
      if (*(char *)(iVar8 + 0x41b8) != '\0') {
        local_98 = *(int *)(iVar8 + 0x521c);
        local_9c = *(int *)(iVar8 + 0x5218);
        if (local_98 == 0 && local_9c == 0) {
          local_9c = *(int *)(iVar16 + 0x20);
          local_98 = *(int *)(iVar16 + 0x24);
        }
        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),
                              local_9c,local_98);
        goto joined_r0x0008887a;
      }
    }
    else if (*(char *)(iVar8 + 0x423c) != '\0') {
      local_98 = *(int *)(iVar8 + 0x521c);
      local_9c = *(int *)(iVar8 + 0x5218);
      if (local_98 == 0 && local_9c == 0) {
        local_9c = *(int *)(iVar16 + 0x20);
        local_98 = *(int *)(iVar16 + 0x24);
      }
      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c
                            ,local_98);
joined_r0x0008887a:
      if (lVar20 != 0) {
        cVar7 = *(char *)(iVar8 + 0x318d);
        iVar16 = 0;
        goto LAB_00087f2e;
      }
    }
    iVar16 = local_90;
    if ((local_90 != 0) && (iVar9 == 0)) {
      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {
                    /* WARNING: Subroutine does not return */
        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);
      }
      cVar7 = *(char *)(iVar8 + 0x318d);
      goto LAB_00087f2e;
    }
    cVar7 = *(char *)(iVar8 + 0x318d);
    if (iVar9 == 0) goto LAB_00087f2e;
    local_80 = iVar9;
    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))
    {
      if (cVar7 != '\0') goto LAB_000887ba;
      goto LAB_00087f39;
    }
    if (cVar7 != '\0') goto LAB_000887ba;
    if ((*(byte *)(local_94 + 7) & 2) == 0) {
      (**(code **)(*local_94 + 0x38))(local_94);
      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;
    }
    if ((*(byte *)(local_8c + 7) & 2) == 0) {
      (**(code **)(*local_8c + 0x38))(local_8c);
      if ((*(byte *)(local_8c + 7) & 2) == 0) {
LAB_00088c5f:
                    /* WARNING: Subroutine does not return */
        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);
      }
      if ((*(byte *)(local_94 + 7) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);
      }
    }
    uVar14 = local_94[3] + local_8c[3];
    iVar8 = *(int *)(*(int *)pbVar1 + 8);
    if (iVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0007a620();
    }
    local_a0 = *(int *)(iVar8 + 0x521c);
    local_a4 = *(int *)(iVar8 + 0x5218);
    if (local_a0 == 0 && local_a4 == 0) {
      local_a0 = *(int *)(param_4[1] + 0x24);
      local_a4 = *(int *)(param_4[1] + 0x20);
    }
    uVar3 = *(uint *)(iVar9 + 0x164);
    uVar4 = *(uint *)(iVar9 + 0x168);
    uVar17 = uVar3 - uVar14 & -local_a4;
    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));
    uVar11 = uVar3 - uVar17;
    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);
    cVar7 = *(char *)(iVar8 + 0x318d);
    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {
      uVar5 = *(uint *)(iVar9 + 0x160);
      uVar6 = *(uint *)(iVar9 + 0x15c);
      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {
        *(uint *)(iVar9 + 0x164) = uVar17;
        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;
        *(uint *)(iVar9 + 0x160) =
             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)
        ;
        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;
        *(uint *)(iVar9 + 0x168) = uVar18;
        iVar8 = uVar15 - (uVar11 < uVar14);
        if (cVar7 != '\0') goto LAB_000887ba;
        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;
        if (iVar9 == 0) goto LAB_0008878f;
        piVar12 = (int *)FUN_0017ebf0(0x2c);
        piVar12[1] = 0;
        piVar12[3] = uVar11 - uVar14;
        piVar12[2] = 0;
        piVar12[8] = 0;
        piVar12[9] = 1;
        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;
        piVar12[10] = 0;
        piVar12[4] = iVar8;
        piVar12[5] = -1;
        piVar12[6] = -1;
        *piVar12 = unaff_EDI + 0x2759db;
        FUN_000bee40(iVar9,piVar12);
        goto LAB_0008878f;
      }
    }
    if (cVar7 != '\0') goto LAB_00087f7a;
    local_80 = 0;
    uVar19 = local_5c;
LAB_00087f52:
    local_5c = uVar19;
    if (iVar16 != 0) goto LAB_00087f5a;
    iVar9 = *(int *)(param_1 + 4);
    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;
LAB_00087fc3:
    iVar9 = local_88;
    local_68 = 1;
    local_5c = uVar19;
    if (*(char *)(iVar8 + 0x318d) == '\0') {
      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);
      iVar8 = *(int *)pbVar1;
      iVar16 = *(int *)(iVar8 + 8);
      if (iVar16 == 0) goto LAB_000888c2;
LAB_00087ff2:
      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {
        if (local_88 == 0) {
          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);
        }
        else {
          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);
        }
        iVar8 = *(int *)pbVar1;
        iVar16 = *(int *)(iVar8 + 8);
        if (iVar16 == 0) goto LAB_000888c2;
      }
      local_5c = uVar19;
      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;
      pcVar13 = *(code **)(*param_4 + 0x68);
      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;
      if ((*(char *)(iVar16 + 0x3209) != '\0') &&
         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))
      goto LAB_00088910;
    }
    else {
      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);
      iVar8 = *(int *)pbVar1;
      iVar16 = *(int *)(iVar8 + 8);
      if (iVar16 != 0) goto LAB_00087ff2;
LAB_000888c2:
      pcVar13 = *(code **)(*param_4 + 0x68);
      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;
LAB_000888db:
      local_5c = uVar19;
      cVar7 = (*pcVar13)(param_4);
      if (cVar7 != '\0') {
        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {
          pcVar13 = *(code **)(*param_4 + 0x6c);
          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;
LAB_00088910:
          local_88 = local_88 + 1;
          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);
        }
        else {
LAB_00088970:
          local_88 = local_88 + 1;
          cVar7 = local_88 < 2;
        }
        local_88 = iVar9 + 1;
        if (cVar7 != '\0') {
          FUN_0007c310(param_1);
          goto LAB_00087e80;
        }
      }
    }
LAB_00088098:
    local_88 = iVar9 + 1;
    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);
    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {
      if (local_80 == 0) {
        FUN_00122fd0(iVar9);
      }
      else {
        FUN_00122f70(iVar9,local_80,0);
      }
    }
    uVar19 = FUN_0007cbc0(param_1,local_5c,0);
    piVar12 = *(int **)(param_1 + 0x13c);
    iVar9 = local_68;
    if (*(int **)(param_1 + 0x140) != piVar12) {
      do {
        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {
          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {
            piVar2[0x18] = iVar9;
          }
          else {
            local_5c = uVar19;
            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);
            uVar19 = local_5c;
          }
          iVar9 = iVar9 + 1;
          piVar12 = piVar12 + 1;
          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;
        }
        piVar12 = piVar12 + 1;
      } while (*(int **)(param_1 + 0x140) != piVar12);
    }
LAB_00088157:
    local_68 = iVar9;
    local_5c = uVar19;
    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);
    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {
      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {
        FUN_0007d770(param_1,param_2);
      }
      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);
      if (*(int *)(param_1 + 0x1d0) != 0) {
        FUN_00066ab0(*(int *)(param_1 + 0x1d0));
        FUN_00080980(param_1,param_3);
      }
      uVar10 = FUN_00081560(param_1);
      uVar19 = FUN_0007cbc0(param_1,local_5c,0);
      piVar12 = *(int **)(param_1 + 0x13c);
      iVar9 = local_68;
      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;
      goto LAB_0008822e;
    }
LAB_00088c31:
    cVar7 = FUN_0007a5f0();
    iVar8 = extraout_ECX;
    iVar16 = local_90;
LAB_00087f2e:
    if (cVar7 == '\0') {
      local_80 = 0;
LAB_00087f39:
      if (local_8c == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);
      }
      uVar19 = local_5c;
      if (local_80 == 0) goto LAB_00087f52;
LAB_0008878f:
      FUN_000bee40(local_80,local_8c);
      if (iVar16 != 0) {
LAB_00087f5a:
        FUN_000bee40(iVar16,local_8c);
        if (local_80 == 0) goto LAB_00087f7a;
      }
LAB_000887ba:
      FUN_000bee40(local_80,local_94);
      iVar8 = *(int *)(*(int *)pbVar1 + 8);
    }
    else {
LAB_00087f7a:
      local_80 = 0;
      iVar8 = *(int *)(*(int *)pbVar1 + 8);
    }
    iVar9 = *(int *)(param_1 + 4);
    uVar19 = local_5c;
    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;
LAB_00087f99:
    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;
    if (iVar8 != 0) goto code_r0x00087faf;
  }
  goto LAB_00088477;
LAB_0008822e:
  piVar2 = (int *)*piVar12;
  if (piVar2[0x18] == -1) {
    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {
      piVar2[0x18] = iVar9;
    }
    else {
      local_5c = uVar19;
      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);
      uVar19 = local_5c;
    }
    iVar9 = iVar9 + 1;
    piVar12 = piVar12 + 1;
    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;
    goto LAB_0008822e;
  }
  piVar12 = piVar12 + 1;
  if (*(int **)(param_1 + 0x140) == piVar12) {
LAB_00088259:
    local_68 = iVar9;
    local_5c = uVar19;
    FUN_0007d3e0(param_1,uVar10,local_b0);
    uVar19 = local_5c;
    if (*(char *)(param_1 + 0x1ca) == '\0') {
      uVar19 = FUN_0007cbc0(param_1,local_5c,1);
      local_5c = uVar19;
      uVar19 = FUN_0007cbc0(param_1,uVar19,2);
    }
    local_5c = uVar19;
    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);
    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;
    *(undefined8 *)(param_1 + 0x1bc) = local_5c;
    return;
  }
  goto LAB_0008822e;
code_r0x00087faf:
  if (*(char *)(iVar8 + 0x318d) == '\0') {
    local_5c = uVar19;
    FUN_00109060(iVar9 + 0xac,local_94,local_8c);
    iVar8 = *(int *)(*(int *)pbVar1 + 8);
    uVar19 = local_5c;
LAB_00088468:
    local_68 = 1;
    if (iVar8 == 0) goto LAB_00088477;
  }
  goto LAB_00087fc3;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x0004fb7e
ADD EDI,0x27a2d7
PUSH ESI
PUSH EBX
SUB ESP,0xbc
MOV EAX,dword ptr [EBP + 0x14]
MOV dword ptr [EBP + -0x70],0x0
MOV dword ptr [EBP + -0x6c],0x0
MOV EAX,dword ptr [EAX]
LEA EDX,[EDI + 0xffd86e60]
MOV dword ptr [EBP + -0x80],EDI
MOV EAX,dword ptr [EAX + 0x10]
CMP EAX,EDX
JNZ 0x00088b98
SUB ESP,0x4
PUSH dword ptr [EBP + 0xc]
PUSH dword ptr [EBP + 0x18]
PUSH dword ptr [EBP + 0x8]
CALL 0x0007d2c0
POP ECX
PUSH dword ptr [EBP + 0x8]
CALL 0x00082750
MOV EAX,dword ptr [EBP + -0x80]
ADD ESP,0x10
LEA EDI,[EAX + 0x378]
MOV EDX,dword ptr [EDI]
MOV EAX,dword ptr [EDX + 0x8]
TEST EAX,EAX
JZ 0x00088477
CMP byte ptr [EAX + 0x318d],0x0
JZ 0x000882d0
MOV dword ptr [EBP + 0xffffff74],0x0
MOV dword ptr [EBP + 0xffffff78],0x0
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x80]
PUSH 0x34
CALL 0x0017ebf0
ADD ESP,0x10
PUSH dword ptr [EBP + 0xffffff78]
MOV EBX,dword ptr [EBP + -0x80]
PUSH dword ptr [EBP + 0x10]
MOV ESI,EAX
PUSH dword ptr [EBP + 0x14]
PUSH EAX
MOV dword ptr [EBP + 0xffffff70],EAX
CALL 0x000ba800
MOV ECX,dword ptr [EBP + 0x8]
POP EAX
MOV dword ptr [EBP + -0x58],ESI
LEA ESI,[EBP + -0x58]
POP EDX
PUSH ESI
LEA EBX,[ECX + 0x148]
MOV dword ptr [EBP + 0xffffff54],ESI
PUSH EBX
CALL 0x0008a170
MOV EAX,dword ptr [EBP + 0xffffff78]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00087e1a
SUB ESP,0x8
MOV dword ptr [EBP + -0x58],EAX
PUSH ESI
PUSH EBX
CALL 0x0008a170
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
CMP byte ptr [EAX + 0xac],0x0
JNZ 0x00088ac0
MOV EAX,dword ptr [EDI]
MOV EDX,dword ptr [EAX + 0x8]
TEST EDX,EDX
JZ 0x00088adb
TEST byte ptr [EAX + 0x14],0x8
JNZ 0x00087e64
MOV EAX,dword ptr [EBP + 0x14]
MOV ESI,dword ptr [EBP + -0x80]
MOV EAX,dword ptr [EAX]
LEA ECX,[ESI + 0xffd871c0]
MOV EAX,dword ptr [EAX + 0x68]
CMP EAX,ECX
JNZ 0x00088af4
MOVZX EAX,byte ptr [EDX + 0x3209]
TEST AL,AL
JZ 0x00087e72
SUB ESP,0xc
PUSH dword ptr [EBP + 0x8]
CALL 0x00083a60
ADD ESP,0x10
MOV dword ptr [EBP + 0xffffff7c],0x0
LEA ESI,[ESI]
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
CMP byte ptr [EAX + 0xac],0x0
JNZ 0x00088930
MOV EAX,dword ptr [EDI]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x00088477
CMP byte ptr [EAX + 0x318d],0x0
MOV dword ptr [EBP + -0x7c],0x0
JZ 0x000889c0
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x80]
PUSH EAX
CALL 0x000aa690
ADD ESP,0x10
TEST EAX,EAX
MOV EAX,0x0
CMOVZ EAX,dword ptr [EBP + -0x7c]
MOV dword ptr [EBP + -0x7c],EAX
MOV EAX,dword ptr [EDI]
MOV ECX,dword ptr [EAX + 0x8]
TEST ECX,ECX
JZ 0x00088477
MOV EAX,dword ptr [EBP + 0x14]
MOV ESI,dword ptr [EAX + 0x4]
CMP byte ptr [ESI + 0x30],0x0
JZ 0x000887f0
CMP byte ptr [ECX + 0x423c],0x0
JNZ 0x000889e0
MOV EDX,dword ptr [EBP + 0xffffff74]
TEST EDX,EDX
JZ 0x00088498
MOV EAX,dword ptr [EBP + -0x7c]
TEST EAX,EAX
JNZ 0x00088498
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
CMP byte ptr [EAX + 0xac],0x0
JZ 0x00088bf5
MOVZX EAX,byte ptr [ECX + 0x318d]
TEST AL,AL
JNZ 0x00087f7a
MOV dword ptr [EBP + -0x7c],0x0
MOV EBX,dword ptr [EBP + 0xffffff78]
TEST EBX,EBX
JZ 0x00088c13
MOV EAX,dword ptr [EBP + -0x7c]
TEST EAX,EAX
JNZ 0x0008878f
TEST EDX,EDX
JZ 0x00088a70
SUB ESP,0x8
PUSH dword ptr [EBP + 0xffffff78]
MOV EBX,dword ptr [EBP + -0x80]
PUSH EDX
CALL 0x000bee40
MOV ECX,dword ptr [EBP + -0x7c]
ADD ESP,0x10
TEST ECX,ECX
JNZ 0x000887ba
MOV EAX,dword ptr [EDI]
MOV dword ptr [EBP + -0x7c],0x0
MOV ECX,dword ptr [EAX + 0x8]
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
CMP byte ptr [EAX + 0xac],0x0
JZ 0x00088468
MOV EDX,dword ptr [EAX + 0xbc]
TEST EDX,EDX
JZ 0x00088468
TEST ECX,ECX
JZ 0x00088477
CMP byte ptr [ECX + 0x318d],0x0
JZ 0x00088440
MOV dword ptr [EBP + -0x64],0x1
CMP byte ptr [ECX + 0x318d],0x0
JNZ 0x00088890
LEA EAX,[EBP + -0x64]
PUSH EAX
PUSH dword ptr [EBP + -0x7c]
PUSH dword ptr [EBP + 0x14]
PUSH dword ptr [EBP + 0x8]
CALL 0x00086af0
MOV ECX,dword ptr [EDI]
ADD ESP,0x10
MOV EBX,dword ptr [ECX + 0x8]
TEST EBX,EBX
JZ 0x000888b5
TEST byte ptr [ECX + 0x14],0x8
JZ 0x00088998
MOV ESI,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + 0xffffff68],EAX
MOV dword ptr [EBP + 0xffffff6c],EDX
LEA EBX,[ESI + 0x130]
MOV ECX,dword ptr [ESI + 0x1e8]
MOV ESI,dword ptr [EBP + 0xffffff7c]
TEST ESI,ESI
JNZ 0x000889b0
SUB ESP,0x8
PUSH EBX
PUSH ECX
CALL 0x0007f530
MOV ECX,dword ptr [EDI]
MOV EAX,dword ptr [EBP + 0xffffff68]
ADD ESP,0x10
MOV EDX,dword ptr [EBP + 0xffffff6c]
MOV EBX,dword ptr [ECX + 0x8]
MOV dword ptr [EBP + -0x58],EAX
MOV dword ptr [EBP + -0x54],EDX
ADD dword ptr [EBP + 0xffffff7c],0x1
TEST EBX,EBX
JZ 0x000888c2
TEST byte ptr [ECX + 0x14],0x8
JNZ 0x00088970
MOV EAX,dword ptr [EBP + 0x14]
MOV EDX,dword ptr [EAX]
MOV EAX,dword ptr [EBP + -0x80]
MOV ECX,dword ptr [EDX + 0x68]
LEA EAX,[EAX + 0xffd871c0]
CMP ECX,EAX
JNZ 0x000888db
CMP byte ptr [EBX + 0x3209],0x0
JZ 0x00088098
MOV ESI,dword ptr [EBP + -0x80]
MOV EAX,dword ptr [EDX + 0x6c]
LEA EDX,[ESI + 0xffd86e70]
CMP EAX,EDX
JNZ 0x00088910
MOV EBX,dword ptr [EBP + -0x80]
SUB ESP,0x4
MOV ESI,dword ptr [EBP + -0x7c]
PUSH 0x0
LEA EAX,[EBX + 0xfff21268]
PUSH EAX
PUSH dword ptr [EBP + 0x10]
CALL 0x00124fc0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000880e0
TEST byte ptr [EAX + 0x2c],0x4
JZ 0x000880e0
TEST ESI,ESI
JZ 0x00088bcd
SUB ESP,0x4
MOV EBX,dword ptr [EBP + -0x80]
PUSH 0x0
PUSH ESI
PUSH EAX
CALL 0x00122f70
ADD ESP,0x10
LEA ESI,[ESI]
PUSH 0x0
PUSH dword ptr [EBP + -0x54]
PUSH dword ptr [EBP + -0x58]
PUSH dword ptr [EBP + 0x8]
CALL 0x0007cbc0
MOV ESI,dword ptr [EBP + -0x64]
ADD ESP,0x10
MOV dword ptr [EBP + -0x58],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x54],EDX
MOV EBX,dword ptr [EAX + 0x13c]
CMP dword ptr [EAX + 0x140],EBX
JZ 0x00088157
MOV EAX,dword ptr [EBP + -0x80]
LEA ECX,[EAX + 0xffd87170]
JMP 0x0008812e
MOV EAX,dword ptr [EBP + 0x8]
ADD EBX,0x4
CMP dword ptr [EAX + 0x140],EBX
JZ 0x00088157
MOV EAX,dword ptr [EBX]
CMP dword ptr [EAX + 0x60],-0x1
JNZ 0x00088120
MOV EDX,dword ptr [EAX]
MOV EDX,dword ptr [EDX + 0x30]
CMP EDX,ECX
JNZ 0x00088a90
MOV dword ptr [EAX + 0x60],ESI
MOV EAX,dword ptr [EBP + 0x8]
ADD ESI,0x1
ADD EBX,0x4
CMP dword ptr [EAX + 0x140],EBX
JNZ 0x0008812e
SUB ESP,0x8
PUSH dword ptr [EBP + -0x70]
PUSH dword ptr [EBP + 0xffffff54]
PUSH ESI
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x64],ESI
CALL 0x00080c40
MOV EAX,dword ptr [EDI]
ADD ESP,0x20
CMP byte ptr [EAX + 0x10],0x0
JZ 0x00088c31
CMP byte ptr [EAX + 0x11],0x0
JZ 0x00088b08
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0x4
MOV EDI,dword ptr [EBP + -0x80]
PUSH dword ptr [EBP + 0x8]
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EAX + 0x4]
MOV EBX,EDI
CALL 0x00115690
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV EAX,dword ptr [EAX + 0x1d0]
TEST EAX,EAX
JZ 0x000881d0
SUB ESP,0xc
PUSH EAX
CALL 0x00066ab0
POP EBX
POP ESI
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0x8]
CALL 0x00080980
ADD ESP,0x10
SUB ESP,0xc
PUSH dword ptr [EBP + 0x8]
CALL 0x00081560
ADD ESP,0x10
PUSH 0x0
MOV ESI,EAX
PUSH dword ptr [EBP + -0x54]
PUSH dword ptr [EBP + -0x58]
PUSH dword ptr [EBP + 0x8]
CALL 0x0007cbc0
MOV EDI,dword ptr [EBP + -0x64]
ADD ESP,0x10
MOV dword ptr [EBP + -0x58],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x54],EDX
MOV EBX,dword ptr [EAX + 0x13c]
CMP EBX,dword ptr [EAX + 0x140]
JZ 0x00088259
MOV EAX,dword ptr [EBP + -0x80]
LEA ECX,[EAX + 0xffd87170]
MOV EAX,ECX
MOV ECX,ESI
MOV ESI,EAX
JMP 0x0008822e
MOV EAX,dword ptr [EBP + 0x8]
ADD EBX,0x4
CMP dword ptr [EAX + 0x140],EBX
JZ 0x00088257
MOV EAX,dword ptr [EBX]
CMP dword ptr [EAX + 0x60],-0x1
JNZ 0x00088220
MOV EDX,dword ptr [EAX]
MOV EDX,dword ptr [EDX + 0x30]
CMP EDX,ESI
JNZ 0x00088aa8
MOV dword ptr [EAX + 0x60],EDI
MOV EAX,dword ptr [EBP + 0x8]
ADD EDI,0x1
ADD EBX,0x4
CMP dword ptr [EAX + 0x140],EBX
JNZ 0x0008822e
MOV ESI,ECX
SUB ESP,0x4
PUSH dword ptr [EBP + 0xffffff54]
PUSH ESI
PUSH dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x64],EDI
CALL 0x0007d3e0
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
CMP byte ptr [EAX + 0x1ca],0x0
JZ 0x00088b20
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0x4
MOV EDI,dword ptr [EBP + -0x80]
PUSH ESI
PUSH dword ptr [EAX + 0x160]
MOV EBX,EDI
PUSH dword ptr [EBP + 0xffffff70]
CALL 0x000ba760
LEA EAX,[EDI + 0x61f2]
MOV EDX,dword ptr [EBP + -0x54]
ADD ESP,0x10
MOV EDI,dword ptr [EBP + 0x8]
MOV byte ptr [EAX],0x1
MOV EAX,dword ptr [EBP + -0x58]
MOV dword ptr [EDI + 0x1c0],EDX
MOV dword ptr [EDI + 0x1bc],EAX
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP byte ptr [EDX + 0x10],0x0
JZ 0x00088c31
CMP byte ptr [EDX + 0x11],0x0
JNZ 0x00088b58
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
CMP byte ptr [EAX + 0xac],0x0
JNZ 0x00088bb0
SUB ESP,0x4
PUSH 0x4
PUSH 0x6
PUSH dword ptr [EBP + 0x8]
CALL 0x0007f710
ADD ESP,0x10
MOV dword ptr [EBP + 0xffffff74],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
MOV ESI,dword ptr [EBP + 0x8]
SUB ESP,0x4
ADD EAX,0x68
MOV EBX,dword ptr [EBP + -0x80]
MOV dword ptr [EBP + -0x64],0x0
ADD ESI,0xa0
MOV dword ptr [EBP + -0x60],0x0
PUSH ESI
PUSH EAX
LEA EAX,[EBP + -0x58]
PUSH EAX
MOV dword ptr [EBP + -0x7c],ESI
MOV ESI,EAX
MOV dword ptr [EBP + -0x5c],0x0
MOV dword ptr [EBP + 0xffffff54],EAX
CALL 0x00146780
ADD ESP,0x10
LEA EAX,[EBP + -0x6c]
PUSH ESI
LEA ESI,[EBP + -0x64]
PUSH ESI
PUSH EAX
LEA EAX,[EBP + -0x70]
PUSH EAX
LEA EAX,[EBP + -0x68]
PUSH EAX
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH dword ptr [EBP + 0x8]
CALL 0x00085d40
MOV EAX,dword ptr [EDI]
ADD ESP,0x20
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x00088c46
CMP byte ptr [EAX + 0x1a25],0x0
JZ 0x00088397
MOV EAX,dword ptr [EAX + 0x1f64]
TEST EAX,EAX
JZ 0x000883a8
MOV EAX,dword ptr [EBP + 0x8]
MOV EBX,dword ptr [EAX + 0x16c]
TEST EBX,EBX
JZ 0x00088be1
SUB ESP,0x4
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH dword ptr [EBP + 0x8]
CALL 0x000817a0
POP ECX
MOV EBX,dword ptr [EBP + -0x80]
PUSH dword ptr [EBP + -0x7c]
CALL 0x001215b0
MOV EBX,dword ptr [EBP + 0xffffff54]
POP EAX
MOV EAX,dword ptr [EBP + -0x6c]
ADD EAX,dword ptr [EBP + -0x70]
POP EDX
PUSH dword ptr [EBP + -0x68]
PUSH ESI
PUSH EAX
PUSH dword ptr [EBP + 0x10]
PUSH EBX
PUSH dword ptr [EBP + 0x8]
CALL 0x00086870
ADD ESP,0x18
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0x8]
CALL 0x0007d800
MOV ESI,dword ptr [EBP + -0x80]
MOV dword ptr [ESP],EBX
MOV EBX,ESI
CALL 0x001459e0
MOV EAX,dword ptr [EBP + -0x64]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00088415
SUB ESP,0xc
PUSH EAX
CALL 0x001807a0
ADD ESP,0x10
MOV EAX,dword ptr [EDI]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x00088477
CMP byte ptr [EAX + 0x318d],0x0
JZ 0x00088b62
MOV dword ptr [EBP + 0xffffff78],0x0
JMP 0x00087db2
SUB ESP,0x4
ADD EAX,0xac
PUSH dword ptr [EBP + 0xffffff78]
MOV EBX,dword ptr [EBP + -0x80]
PUSH dword ptr [EBP + 0xffffff70]
PUSH EAX
CALL 0x00109060
MOV EAX,dword ptr [EDI]
ADD ESP,0x10
MOV ECX,dword ptr [EAX + 0x8]
LEA ESI,[ESI]
MOV dword ptr [EBP + -0x64],0x1
TEST ECX,ECX
JNZ 0x00087fc3
MOV EBX,dword ptr [EBP + -0x80]
SUB ESP,0x4
LEA EAX,[EBX + 0xfff223a8]
PUSH EAX
LEA EAX,[EBX + 0xfff1e970]
PUSH 0x5c
PUSH EAX
CALL 0x0005f0b0
MOV ESI,dword ptr [EBP + -0x7c]
MOVZX EAX,byte ptr [ECX + 0x318d]
TEST ESI,ESI
JZ 0x00088c36
TEST byte ptr [ESI + 0x19c],0x2
JZ 0x000887e0
MOV EDX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EDX + 0x4]
CMP byte ptr [EDX + 0xac],0x0
JNZ 0x000887e0
TEST AL,AL
JNZ 0x000887ba
MOV ESI,dword ptr [EBP + 0xffffff70]
TEST byte ptr [ESI + 0x1c],0x2
JNZ 0x000884f4
SUB ESP,0xc
MOV EAX,dword ptr [ESI]
PUSH ESI
CALL dword ptr [EAX + 0x38]
ADD ESP,0x10
TEST byte ptr [ESI + 0x1c],0x2
JZ 0x00088c5f
MOV EAX,dword ptr [EBP + 0xffffff78]
TEST byte ptr [EAX + 0x1c],0x2
JNZ 0x0008852c
MOV ESI,dword ptr [EBP + 0xffffff78]
SUB ESP,0xc
MOV EAX,dword ptr [ESI]
PUSH ESI
CALL dword ptr [EAX + 0x38]
ADD ESP,0x10
TEST byte ptr [ESI + 0x1c],0x2
JZ 0x00088c5f
MOV EAX,dword ptr [EBP + 0xffffff70]
TEST byte ptr [EAX + 0x1c],0x2
JZ 0x00088c7b
MOV EAX,dword ptr [EBP + 0xffffff70]
MOV ECX,dword ptr [EAX + 0xc]
MOV EAX,dword ptr [EBP + 0xffffff78]
ADD ECX,dword ptr [EAX + 0xc]
MOV EAX,dword ptr [EDI]
MOV EBX,ECX
MOV ECX,dword ptr [EAX + 0x8]
TEST ECX,ECX
JZ 0x00088c41
MOV EDX,dword ptr [ECX + 0x521c]
MOV EAX,dword ptr [ECX + 0x5218]
MOV dword ptr [EBP + 0xffffff64],EDX
MOV EDX,dword ptr [EBP + 0xffffff64]
MOV dword ptr [EBP + 0xffffff60],EAX
OR EDX,EAX
JNZ 0x00088587
MOV EAX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EAX + 0x4]
MOV EDX,dword ptr [EAX + 0x24]
MOV EAX,dword ptr [EAX + 0x20]
MOV dword ptr [EBP + 0xffffff64],EDX
MOV dword ptr [EBP + 0xffffff60],EAX
MOV ESI,dword ptr [EBP + -0x7c]
MOV dword ptr [EBP + 0xffffff40],EBX
MOV dword ptr [EBP + 0xffffff44],0x0
MOV EAX,dword ptr [ESI + 0x164]
MOV EDX,dword ptr [ESI + 0x168]
MOV dword ptr [EBP + 0xffffff68],EAX
SUB EAX,dword ptr [EBP + 0xffffff40]
MOV dword ptr [EBP + 0xffffff6c],EDX
SBB EDX,dword ptr [EBP + 0xffffff44]
MOV dword ptr [EBP + 0xffffff58],EAX
MOV EAX,dword ptr [EBP + 0xffffff60]
MOV dword ptr [EBP + 0xffffff5c],EDX
MOV EBX,dword ptr [EBP + 0xffffff58]
MOV EDX,dword ptr [EBP + 0xffffff64]
NEG EAX
ADC EDX,0x0
AND EBX,EAX
MOV EAX,dword ptr [EBP + 0xffffff68]
MOV dword ptr [EBP + 0xffffff48],EBX
MOV EBX,dword ptr [EBP + 0xffffff5c]
NEG EDX
AND EBX,EDX
SUB EAX,dword ptr [EBP + 0xffffff48]
MOV EDX,dword ptr [EBP + 0xffffff6c]
MOV dword ptr [EBP + 0xffffff4c],EBX
SBB EDX,dword ptr [EBP + 0xffffff4c]
MOV dword ptr [EBP + 0xffffff60],EAX
MOVZX EAX,byte ptr [ECX + 0x318d]
MOV dword ptr [EBP + 0xffffff64],EDX
MOV EDX,dword ptr [EBP + 0xffffff6c]
MOV byte ptr [EBP + 0xffffff58],AL
MOV EAX,dword ptr [EBP + 0xffffff68]
MOV EBX,EDX
CMP EAX,dword ptr [EBP + 0xffffff60]
SBB EBX,dword ptr [EBP + 0xffffff64]
JNC 0x00088670
CMP byte ptr [EBP + 0xffffff58],0x0
JNZ 0x00087f7a
MOV EDX,dword ptr [EBP + 0xffffff74]
MOV dword ptr [EBP + -0x7c],0x0
JMP 0x00087f52
MOV EDX,dword ptr [ESI + 0x160]
MOV EAX,dword ptr [ESI + 0x15c]
CMP EAX,dword ptr [EBP + 0xffffff60]
MOV EBX,EDX
SBB EBX,dword ptr [EBP + 0xffffff64]
JC 0x0008864a
MOV ECX,EAX
MOV EAX,dword ptr [EBP + 0xffffff48]
SUB ECX,dword ptr [EBP + 0xffffff68]
MOV EBX,EDX
MOV EDX,dword ptr [EBP + 0xffffff4c]
SBB EBX,dword ptr [EBP + 0xffffff6c]
ADD ECX,EAX
MOV dword ptr [ESI + 0x164],EAX
ADC EBX,EDX
MOV dword ptr [ESI + 0x15c],ECX
MOV dword ptr [ESI + 0x160],EBX
MOV EBX,dword ptr [EBP + 0xffffff60]
OR byte ptr [ESI + 0x19c],0x2
SUB EBX,dword ptr [EBP + 0xffffff40]
MOV dword ptr [ESI + 0x168],EDX
MOV ESI,dword ptr [EBP + 0xffffff64]
SBB ESI,dword ptr [EBP + 0xffffff44]
CMP byte ptr [EBP + 0xffffff58],0x0
MOV dword ptr [EBP + 0xffffff68],EBX
MOV dword ptr [EBP + 0xffffff6c],ESI
JNZ 0x000887ba
MOV EAX,dword ptr [EBP + 0xffffff68]
MOV EDX,dword ptr [EBP + 0xffffff6c]
MOV ESI,EAX
OR ESI,EDX
JZ 0x00088789
CMP dword ptr [EBP + -0x7c],0x0
JZ 0x00088789
SUB ESP,0xc
MOV ESI,dword ptr [EBP + -0x80]
PUSH 0x2c
MOV EBX,ESI
CALL 0x0017ebf0
MOV EDX,dword ptr [EBP + 0xffffff68]
MOV ECX,dword ptr [EBP + 0xffffff6c]
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX + 0xc],EDX
MOVZX EDX,byte ptr [EAX + 0x1c]
MOV dword ptr [EAX + 0x8],0x0
AND EDX,0xffffffe0
MOV dword ptr [EAX + 0x20],0x0
OR EDX,0xa
MOV dword ptr [EAX + 0x24],0x1
MOV byte ptr [EAX + 0x1c],DL
LEA EDX,[ESI + 0xffffb704]
MOV dword ptr [EAX + 0x28],0x0
MOV dword ptr [EAX + 0x10],ECX
MOV dword ptr [EAX + 0x14],0xffffffff
MOV dword ptr [EAX + 0x18],0xffffffff
MOV dword ptr [EAX],EDX
POP ESI
POP EDX
PUSH EAX
PUSH dword ptr [EBP + -0x7c]
CALL 0x000bee40
ADD ESP,0x10
MOV EDX,dword ptr [EBP + 0xffffff74]
SUB ESP,0x8
PUSH dword ptr [EBP + 0xffffff78]
MOV EBX,dword ptr [EBP + -0x80]
PUSH dword ptr [EBP + -0x7c]
MOV dword ptr [EBP + 0xffffff68],EDX
CALL 0x000bee40
MOV EDX,dword ptr [EBP + 0xffffff68]
ADD ESP,0x10
TEST EDX,EDX
JNZ 0x00087f5a
SUB ESP,0x8
PUSH dword ptr [EBP + 0xffffff70]
MOV EBX,dword ptr [EBP + -0x80]
PUSH dword ptr [EBP + -0x7c]
CALL 0x000bee40
MOV EAX,dword ptr [EDI]
ADD ESP,0x10
MOV ECX,dword ptr [EAX + 0x8]
JMP 0x00087f86
TEST AL,AL
JNZ 0x000887ba
MOV EDX,dword ptr [EBP + 0xffffff74]
JMP 0x00087f39
CMP byte ptr [ECX + 0x41b8],0x0
JZ 0x00087efb
MOV EDX,dword ptr [ECX + 0x41c0]
MOV EAX,dword ptr [ECX + 0x41bc]
MOV dword ptr [EBP + 0xffffff64],EDX
MOV EDX,dword ptr [ECX + 0x521c]
MOV dword ptr [EBP + 0xffffff60],EAX
MOV EAX,dword ptr [ECX + 0x5218]
MOV dword ptr [EBP + 0xffffff6c],EDX
MOV EBX,dword ptr [EBP + 0xffffff6c]
MOV dword ptr [EBP + 0xffffff68],EAX
OR EBX,EAX
JNZ 0x00088849
MOV EAX,dword ptr [ESI + 0x20]
MOV EDX,dword ptr [ESI + 0x24]
MOV dword ptr [EBP + 0xffffff68],EAX
MOV dword ptr [EBP + 0xffffff6c],EDX
PUSH dword ptr [EBP + 0xffffff6c]
MOV EBX,dword ptr [EBP + -0x80]
PUSH dword ptr [EBP + 0xffffff68]
PUSH dword ptr [EBP + 0xffffff64]
PUSH dword ptr [EBP + 0xffffff60]
MOV dword ptr [EBP + 0xffffff58],ECX
CALL 0x00215240
ADD ESP,0x10
MOV ECX,dword ptr [EBP + 0xffffff58]
OR EDX,EAX
JZ 0x00087efb
MOVZX EAX,byte ptr [ECX + 0x318d]
XOR EDX,EDX
JMP 0x00087f2e
SUB ESP,0x4
LEA EAX,[EBP + -0x64]
PUSH EAX
PUSH dword ptr [EBP + 0xffffff70]
PUSH dword ptr [EBP + 0x8]
CALL 0x0007c8c0
MOV ECX,dword ptr [EDI]
ADD ESP,0x10
MOV EBX,dword ptr [ECX + 0x8]
TEST EBX,EBX
JNZ 0x00087ff2
ADD dword ptr [EBP + 0xffffff7c],0x1
MOV dword ptr [EBP + -0x58],EAX
MOV dword ptr [EBP + -0x54],EDX
MOV EAX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EAX]
MOV ECX,dword ptr [EAX + 0x68]
MOV EAX,dword ptr [EBP + -0x80]
LEA EAX,[EAX + 0xffd871c0]
CMP ECX,EAX
JZ 0x00088477
SUB ESP,0xc
PUSH dword ptr [EBP + 0x14]
CALL ECX
ADD ESP,0x10
TEST AL,AL
JZ 0x00088098
MOV EAX,dword ptr [EDI]
MOV EDX,dword ptr [EAX + 0x8]
TEST EDX,EDX
JNZ 0x00088960
MOV EAX,dword ptr [EBP + 0x14]
MOV ESI,dword ptr [EBP + -0x80]
MOV EDX,dword ptr [EAX]
MOV EAX,dword ptr [EDX + 0x6c]
LEA EDX,[ESI + 0xffd86e70]
CMP EAX,EDX
JZ 0x00088098
SUB ESP,0x8
PUSH dword ptr [EBP + 0x18]
PUSH dword ptr [EBP + 0x8]
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH dword ptr [EBP + 0xffffff7c]
PUSH dword ptr [EBP + 0x14]
CALL EAX
ADD ESP,0x20
JMP 0x0008897a
SUB ESP,0x8
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0x8]
CALL 0x0007d1e0
ADD ESP,0x10
MOV dword ptr [EBP + -0x7c],EAX
MOV EAX,dword ptr [EDI]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JNZ 0x00087eb4
JMP 0x00088477
TEST byte ptr [EAX + 0x14],0x8
JZ 0x000888f7
LEA ESI,[ESI]
LEA ESI,[ESI]
CMP dword ptr [EBP + 0xffffff7c],0x1
SETLE AL
TEST AL,AL
JZ 0x00088098
SUB ESP,0xc
PUSH dword ptr [EBP + 0x8]
CALL 0x0007c310
ADD ESP,0x10
JMP 0x00087e80
MOV dword ptr [EBP + -0x58],EAX
MOV dword ptr [EBP + -0x54],EDX
ADD dword ptr [EBP + 0xffffff7c],0x1
JMP 0x00088058
SUB ESP,0x8
PUSH EBX
PUSH ECX
CALL 0x0007b330
JMP 0x0008802f
SUB ESP,0x8
PUSH dword ptr [EBP + 0x14]
PUSH dword ptr [EBP + 0x8]
CALL 0x00081670
ADD ESP,0x10
MOV dword ptr [EBP + -0x7c],EAX
JMP 0x00088944
MOV EDX,dword ptr [ECX + 0x4244]
MOV EAX,dword ptr [ECX + 0x4240]
MOV dword ptr [EBP + 0xffffff64],EDX
MOV EDX,dword ptr [ECX + 0x521c]
MOV dword ptr [EBP + 0xffffff60],EAX
MOV EAX,dword ptr [ECX + 0x5218]
MOV dword ptr [EBP + 0xffffff6c],EDX
MOV EBX,dword ptr [EBP + 0xffffff6c]
MOV dword ptr [EBP + 0xffffff68],EAX
OR EBX,EAX
JNZ 0x00088a2c
MOV EAX,dword ptr [ESI + 0x20]
MOV EDX,dword ptr [ESI + 0x24]
MOV dword ptr [EBP + 0xffffff68],EAX
MOV dword ptr [EBP + 0xffffff6c],EDX
PUSH dword ptr [EBP + 0xffffff6c]
MOV EBX,dword ptr [EBP + -0x80]
PUSH dword ptr [EBP + 0xffffff68]
PUSH dword ptr [EBP + 0xffffff64]
PUSH dword ptr [EBP + 0xffffff60]
MOV dword ptr [EBP + 0xffffff58],ECX
CALL 0x00215240
ADD ESP,0x10
MOV ECX,dword ptr [EBP + 0xffffff58]
OR EDX,EAX
JNZ 0x00088880
JMP 0x00087efb
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
CMP byte ptr [EAX + 0xac],0x0
JNZ 0x00087f99
JMP 0x00087fbc
SUB ESP,0x8
MOV dword ptr [EBP + -0x7c],ECX
PUSH ESI
PUSH EAX
CALL EDX
MOV ECX,dword ptr [EBP + -0x7c]
ADD ESP,0x10
JMP 0x00088146
SUB ESP,0x8
MOV dword ptr [EBP + -0x7c],ECX
PUSH EDI
PUSH EAX
CALL EDX
MOV ECX,dword ptr [EBP + -0x7c]
ADD ESP,0x10
JMP 0x00088246
SUB ESP,0xc
PUSH dword ptr [EBP + 0x8]
CALL 0x0007d230
MOV EAX,dword ptr [EDI]
ADD ESP,0x10
MOV EDX,dword ptr [EAX + 0x8]
TEST EDX,EDX
JNZ 0x00087e3a
MOV EAX,dword ptr [EBP + 0x14]
MOV ESI,dword ptr [EBP + -0x80]
MOV EAX,dword ptr [EAX]
LEA EDX,[ESI + 0xffd871c0]
MOV EAX,dword ptr [EAX + 0x68]
CMP EAX,EDX
JZ 0x00088477
SUB ESP,0xc
PUSH dword ptr [EBP + 0x14]
CALL EAX
ADD ESP,0x10
JMP 0x00087e60
SUB ESP,0x8
PUSH dword ptr [EBP + 0xc]
PUSH dword ptr [EBP + 0x8]
CALL 0x0007d770
ADD ESP,0x10
JMP 0x0008818e
PUSH 0x1
PUSH dword ptr [EBP + -0x54]
PUSH dword ptr [EBP + -0x58]
PUSH EAX
CALL 0x0007cbc0
ADD ESP,0x10
PUSH 0x2
PUSH EDX
PUSH EAX
PUSH dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x58],EAX
MOV dword ptr [EBP + -0x54],EDX
CALL 0x0007cbc0
ADD ESP,0x10
MOV dword ptr [EBP + -0x58],EAX
MOV dword ptr [EBP + -0x54],EDX
JMP 0x00088281
MOV dword ptr [EBP + 0xffffff74],0x0
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x80]
PUSH 0x24
CALL 0x0017ebf0
POP ECX
POP EBX
MOV ESI,EAX
MOV dword ptr [EBP + 0xffffff78],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV EBX,dword ptr [EBP + -0x80]
ADD EAX,0x124
PUSH EAX
PUSH ESI
CALL 0x000ba6d0
ADD ESP,0x10
JMP 0x00087db2
PUSH dword ptr [EBP + 0x10]
PUSH dword ptr [EBP + 0xc]
PUSH dword ptr [EBP + 0x8]
PUSH dword ptr [EBP + 0x14]
CALL EAX
ADD ESP,0x10
JMP 0x00087d5e
MOV dword ptr [EBP + 0xffffff74],0x0
MOV EDX,dword ptr [EAX + 0xbc]
TEST EDX,EDX
JNZ 0x00088315
JMP 0x000882f7
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x80]
PUSH EAX
CALL 0x00122fd0
ADD ESP,0x10
JMP 0x000880e0
SUB ESP,0x8
PUSH dword ptr [EBP + 0x14]
PUSH EAX
CALL 0x00086960
ADD ESP,0x10
JMP 0x000883a8
MOV EBX,dword ptr [EBP + -0x80]
SUB ESP,0x4
LEA EAX,[EBX + 0xfff22178]
PUSH EAX
LEA EAX,[EBX + 0xfff20ef8]
PUSH 0xaef
PUSH EAX
CALL 0x0005f0b0
MOV EBX,dword ptr [EBP + -0x80]
SUB ESP,0x4
LEA EAX,[EBX + 0xfff22178]
PUSH EAX
LEA EAX,[EBX + 0xfff20ef8]
PUSH 0xb0f
PUSH EAX
CALL 0x0005f0b0
CALL 0x0007a5f0
MOV EDX,dword ptr [EBP + 0xffffff74]
JMP 0x00087f2e
CALL 0x0007a620
MOV EBX,dword ptr [EBP + -0x80]
PUSH EAX
LEA EAX,[EBX + 0xfff223a8]
PUSH EAX
LEA EAX,[EBX + 0xfff1e970]
PUSH 0x5c
PUSH EAX
CALL 0x0005f0b0
MOV EBX,dword ptr [EBP + -0x80]
PUSH EDI
LEA EAX,[EBX + 0xfff22164]
PUSH EAX
LEA EAX,[EBX + 0xfff1f60c]
PUSH 0x163
PUSH EAX
CALL 0x0005f0b0
MOV EBX,dword ptr [EBP + -0x80]
PUSH ESI
LEA EAX,[EBX + 0xfff223b8]
PUSH EAX
LEA EAX,[EBX + 0xfff1f60c]
PUSH 0xcf
PUSH EAX
CALL 0x0005f0b0
(translation_unit "void FUN_00087d20(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5)\n\n{\n  byte *pbVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  int *piVar12;\n  code *pcVar13;\n  uint uVar14;\n  int extraout_ECX;\n  uint uVar15;\n  int iVar16;\n  uint uVar17;\n  uint uVar18;\n  int unaff_EDI;\n  undefined8 uVar19;\n  longlong lVar20;\n  undefined8 *local_b0;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int *local_94;\n  int local_90;\n  int *local_8c;\n  int local_88;\n  int local_80;\n  int local_74;\n  int local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined8 local_5c;\n  \n  FUN_0004fb7e();\n  local_74 = 0;\n  local_70 = 0;\n  if (*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);\n  }\n  FUN_0007d2c0(param_1,param_5,param_2);\n  FUN_00082750(param_1);\n  pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;\n  iVar9 = *(int *)pbVar1;\n  uVar19 = local_5c;\n  if (*(int *)(iVar9 + 8) == 0) goto LAB_00088477;\n  if (*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */\n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */\n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }\n    local_8c = (int *)FUN_0017ebf0(0x24);\n                    /* try { // try from 00088b86 to 00088b8a has its CatchHandler @ 00088ca5 */\n    FUN_000ba6d0(local_8c,param_1 + 0x124);\n  }\n  else {\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }\nLAB_00087db2:\n  local_94 = (int *)FUN_0017ebf0(0x34);\n                    /* try { // try from 00087dda to 00087dde has its CatchHandler @ 00088cac */\n  FUN_000ba800(local_94,param_4,param_3,local_8c);\n  local_b0 = &local_5c;\n  local_5c._0_4_ = local_94;\n  FUN_0008a170(param_1 + 0x148,local_b0);\n  if (local_8c != (int *)0x0) {\n    local_5c._0_4_ = local_8c;\n    FUN_0008a170(param_1 + 0x148,local_b0);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n    pcVar13 = *(code **)(*param_4 + 0x68);\n    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }\nLAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);\nLAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;\n  }\n  else {\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }\n  FUN_00083a60(param_1);\nLAB_00087e72:\n  local_88 = 0;\nLAB_00087e80:\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }\n  local_5c = uVar19;\n  iVar8 = FUN_000aa690(iVar9);\n  iVar9 = 0;\n  if (iVar8 == 0) {\n    iVar9 = local_80;\n  }\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  uVar19 = local_5c;\n  if (iVar8 != 0) {\n    iVar16 = param_4[1];\n    if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }\n    iVar16 = local_90;\n    if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (iVar9 == 0) goto LAB_00087f2e;\n    local_80 = iVar9;\n    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar7 != '\0') goto LAB_000887ba;\n    if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }\n    if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }\n    uVar14 = local_94[3] + local_8c[3];\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0007a620();\n    }\n    local_a0 = *(int *)(iVar8 + 0x521c);\n    local_a4 = *(int *)(iVar8 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }\n    uVar3 = *(uint *)(iVar9 + 0x164);\n    uVar4 = *(uint *)(iVar9 + 0x168);\n    uVar17 = uVar3 - uVar14 & -local_a4;\n    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar11 = uVar3 - uVar17;\n    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar7 != '\0') goto LAB_00087f7a;\n    local_80 = 0;\n    uVar19 = local_5c;\nLAB_00087f52:\n    local_5c = uVar19;\n    if (iVar16 != 0) goto LAB_00087f5a;\n    iVar9 = *(int *)(param_1 + 4);\n    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;\nLAB_00087fc3:\n    iVar9 = local_88;\n    local_68 = 1;\n    local_5c = uVar19;\n    if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar9 + 1;\n    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);\n    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }\n    uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n    piVar12 = *(int **)(param_1 + 0x13c);\n    iVar9 = local_68;\n    if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }\nLAB_00088157:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar7 = FUN_0007a5f0();\n    iVar8 = extraout_ECX;\n    iVar16 = local_90;\nLAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    iVar9 = *(int *)(param_1 + 4);\n    uVar19 = local_5c;\n    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;\nLAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;\n    if (iVar8 != 0) goto code_r0x00087faf;\n  }\n  goto LAB_00088477;\nLAB_0008822e:\n  piVar2 = (int *)*piVar12;\n  if (piVar2[0x18] == -1) {\n    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }\n    iVar9 = iVar9 + 1;\n    piVar12 = piVar12 + 1;\n    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;\n    goto LAB_0008822e;\n  }\n  piVar12 = piVar12 + 1;\n  if (*(int **)(param_1 + 0x140) == piVar12) {\nLAB_00088259:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_0007d3e0(param_1,uVar10,local_b0);\n    uVar19 = local_5c;\n    if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }\n    local_5c = uVar19;\n    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined8 *)(param_1 + 0x1bc) = local_5c;\n    return;\n  }\n  goto LAB_0008822e;\ncode_r0x00087faf:\n  if (*(char *)(iVar8 + 0x318d) == '\0') {\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }\n  goto LAB_00087fc3;\n}\n\n" (function_definition "void FUN_00087d20(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5)\n\n{\n  byte *pbVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  int *piVar12;\n  code *pcVar13;\n  uint uVar14;\n  int extraout_ECX;\n  uint uVar15;\n  int iVar16;\n  uint uVar17;\n  uint uVar18;\n  int unaff_EDI;\n  undefined8 uVar19;\n  longlong lVar20;\n  undefined8 *local_b0;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int *local_94;\n  int local_90;\n  int *local_8c;\n  int local_88;\n  int local_80;\n  int local_74;\n  int local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined8 local_5c;\n  \n  FUN_0004fb7e();\n  local_74 = 0;\n  local_70 = 0;\n  if (*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);\n  }\n  FUN_0007d2c0(param_1,param_5,param_2);\n  FUN_00082750(param_1);\n  pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;\n  iVar9 = *(int *)pbVar1;\n  uVar19 = local_5c;\n  if (*(int *)(iVar9 + 8) == 0) goto LAB_00088477;\n  if (*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */\n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */\n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }\n    local_8c = (int *)FUN_0017ebf0(0x24);\n                    /* try { // try from 00088b86 to 00088b8a has its CatchHandler @ 00088ca5 */\n    FUN_000ba6d0(local_8c,param_1 + 0x124);\n  }\n  else {\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }\nLAB_00087db2:\n  local_94 = (int *)FUN_0017ebf0(0x34);\n                    /* try { // try from 00087dda to 00087dde has its CatchHandler @ 00088cac */\n  FUN_000ba800(local_94,param_4,param_3,local_8c);\n  local_b0 = &local_5c;\n  local_5c._0_4_ = local_94;\n  FUN_0008a170(param_1 + 0x148,local_b0);\n  if (local_8c != (int *)0x0) {\n    local_5c._0_4_ = local_8c;\n    FUN_0008a170(param_1 + 0x148,local_b0);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n    pcVar13 = *(code **)(*param_4 + 0x68);\n    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }\nLAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);\nLAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;\n  }\n  else {\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }\n  FUN_00083a60(param_1);\nLAB_00087e72:\n  local_88 = 0;\nLAB_00087e80:\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }\n  local_5c = uVar19;\n  iVar8 = FUN_000aa690(iVar9);\n  iVar9 = 0;\n  if (iVar8 == 0) {\n    iVar9 = local_80;\n  }\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  uVar19 = local_5c;\n  if (iVar8 != 0) {\n    iVar16 = param_4[1];\n    if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }\n    iVar16 = local_90;\n    if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (iVar9 == 0) goto LAB_00087f2e;\n    local_80 = iVar9;\n    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar7 != '\0') goto LAB_000887ba;\n    if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }\n    if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }\n    uVar14 = local_94[3] + local_8c[3];\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0007a620();\n    }\n    local_a0 = *(int *)(iVar8 + 0x521c);\n    local_a4 = *(int *)(iVar8 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }\n    uVar3 = *(uint *)(iVar9 + 0x164);\n    uVar4 = *(uint *)(iVar9 + 0x168);\n    uVar17 = uVar3 - uVar14 & -local_a4;\n    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar11 = uVar3 - uVar17;\n    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar7 != '\0') goto LAB_00087f7a;\n    local_80 = 0;\n    uVar19 = local_5c;\nLAB_00087f52:\n    local_5c = uVar19;\n    if (iVar16 != 0) goto LAB_00087f5a;\n    iVar9 = *(int *)(param_1 + 4);\n    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;\nLAB_00087fc3:\n    iVar9 = local_88;\n    local_68 = 1;\n    local_5c = uVar19;\n    if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar9 + 1;\n    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);\n    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }\n    uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n    piVar12 = *(int **)(param_1 + 0x13c);\n    iVar9 = local_68;\n    if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }\nLAB_00088157:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar7 = FUN_0007a5f0();\n    iVar8 = extraout_ECX;\n    iVar16 = local_90;\nLAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    iVar9 = *(int *)(param_1 + 4);\n    uVar19 = local_5c;\n    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;\nLAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;\n    if (iVar8 != 0) goto code_r0x00087faf;\n  }\n  goto LAB_00088477;\nLAB_0008822e:\n  piVar2 = (int *)*piVar12;\n  if (piVar2[0x18] == -1) {\n    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }\n    iVar9 = iVar9 + 1;\n    piVar12 = piVar12 + 1;\n    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;\n    goto LAB_0008822e;\n  }\n  piVar12 = piVar12 + 1;\n  if (*(int **)(param_1 + 0x140) == piVar12) {\nLAB_00088259:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_0007d3e0(param_1,uVar10,local_b0);\n    uVar19 = local_5c;\n    if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }\n    local_5c = uVar19;\n    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined8 *)(param_1 + 0x1bc) = local_5c;\n    return;\n  }\n  goto LAB_0008822e;\ncode_r0x00087faf:\n  if (*(char *)(iVar8 + 0x318d) == '\0') {\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }\n  goto LAB_00087fc3;\n}" primitive_type (function_declarator "FUN_00087d20(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  int *piVar12;\n  code *pcVar13;\n  uint uVar14;\n  int extraout_ECX;\n  uint uVar15;\n  int iVar16;\n  uint uVar17;\n  uint uVar18;\n  int unaff_EDI;\n  undefined8 uVar19;\n  longlong lVar20;\n  undefined8 *local_b0;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int *local_94;\n  int local_90;\n  int *local_8c;\n  int local_88;\n  int local_80;\n  int local_74;\n  int local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined8 local_5c;\n  \n  FUN_0004fb7e();\n  local_74 = 0;\n  local_70 = 0;\n  if (*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);\n  }\n  FUN_0007d2c0(param_1,param_5,param_2);\n  FUN_00082750(param_1);\n  pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;\n  iVar9 = *(int *)pbVar1;\n  uVar19 = local_5c;\n  if (*(int *)(iVar9 + 8) == 0) goto LAB_00088477;\n  if (*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */\n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */\n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }\n    local_8c = (int *)FUN_0017ebf0(0x24);\n                    /* try { // try from 00088b86 to 00088b8a has its CatchHandler @ 00088ca5 */\n    FUN_000ba6d0(local_8c,param_1 + 0x124);\n  }\n  else {\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }\nLAB_00087db2:\n  local_94 = (int *)FUN_0017ebf0(0x34);\n                    /* try { // try from 00087dda to 00087dde has its CatchHandler @ 00088cac */\n  FUN_000ba800(local_94,param_4,param_3,local_8c);\n  local_b0 = &local_5c;\n  local_5c._0_4_ = local_94;\n  FUN_0008a170(param_1 + 0x148,local_b0);\n  if (local_8c != (int *)0x0) {\n    local_5c._0_4_ = local_8c;\n    FUN_0008a170(param_1 + 0x148,local_b0);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n    pcVar13 = *(code **)(*param_4 + 0x68);\n    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }\nLAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);\nLAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;\n  }\n  else {\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }\n  FUN_00083a60(param_1);\nLAB_00087e72:\n  local_88 = 0;\nLAB_00087e80:\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }\n  local_5c = uVar19;\n  iVar8 = FUN_000aa690(iVar9);\n  iVar9 = 0;\n  if (iVar8 == 0) {\n    iVar9 = local_80;\n  }\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  uVar19 = local_5c;\n  if (iVar8 != 0) {\n    iVar16 = param_4[1];\n    if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }\n    iVar16 = local_90;\n    if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (iVar9 == 0) goto LAB_00087f2e;\n    local_80 = iVar9;\n    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar7 != '\0') goto LAB_000887ba;\n    if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }\n    if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }\n    uVar14 = local_94[3] + local_8c[3];\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0007a620();\n    }\n    local_a0 = *(int *)(iVar8 + 0x521c);\n    local_a4 = *(int *)(iVar8 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }\n    uVar3 = *(uint *)(iVar9 + 0x164);\n    uVar4 = *(uint *)(iVar9 + 0x168);\n    uVar17 = uVar3 - uVar14 & -local_a4;\n    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar11 = uVar3 - uVar17;\n    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar7 != '\0') goto LAB_00087f7a;\n    local_80 = 0;\n    uVar19 = local_5c;\nLAB_00087f52:\n    local_5c = uVar19;\n    if (iVar16 != 0) goto LAB_00087f5a;\n    iVar9 = *(int *)(param_1 + 4);\n    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;\nLAB_00087fc3:\n    iVar9 = local_88;\n    local_68 = 1;\n    local_5c = uVar19;\n    if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar9 + 1;\n    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);\n    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }\n    uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n    piVar12 = *(int **)(param_1 + 0x13c);\n    iVar9 = local_68;\n    if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }\nLAB_00088157:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar7 = FUN_0007a5f0();\n    iVar8 = extraout_ECX;\n    iVar16 = local_90;\nLAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    iVar9 = *(int *)(param_1 + 4);\n    uVar19 = local_5c;\n    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;\nLAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;\n    if (iVar8 != 0) goto code_r0x00087faf;\n  }\n  goto LAB_00088477;\nLAB_0008822e:\n  piVar2 = (int *)*piVar12;\n  if (piVar2[0x18] == -1) {\n    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }\n    iVar9 = iVar9 + 1;\n    piVar12 = piVar12 + 1;\n    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;\n    goto LAB_0008822e;\n  }\n  piVar12 = piVar12 + 1;\n  if (*(int **)(param_1 + 0x140) == piVar12) {\nLAB_00088259:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_0007d3e0(param_1,uVar10,local_b0);\n    uVar19 = local_5c;\n    if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }\n    local_5c = uVar19;\n    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined8 *)(param_1 + 0x1bc) = local_5c;\n    return;\n  }\n  goto LAB_0008822e;\ncode_r0x00087faf:\n  if (*(char *)(iVar8 + 0x318d) == '\0') {\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }\n  goto LAB_00087fc3;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar19;" type_identifier identifier ;) (declaration "longlong lVar20;" type_identifier identifier ;) (declaration "undefined8 *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "int local_a4;" primitive_type identifier ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "int local_98;" primitive_type identifier ;) (declaration "int *local_94;" primitive_type (pointer_declarator "*local_94" * identifier) ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int *local_8c;" primitive_type (pointer_declarator "*local_8c" * identifier) ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined8 local_5c;" type_identifier identifier ;) (expression_statement "FUN_0004fb7e();" (call_expression "FUN_0004fb7e()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (if_statement "if (*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);\n  }" if (parenthesized_expression "(*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137))" ( (binary_expression "*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)" (pointer_expression "*(code **)(*param_4 + 0x10)" * (cast_expression "(code **)(*param_4 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x10)" ( (binary_expression "*param_4 + 0x10" (pointer_expression "*param_4" * identifier) + number_literal) )))) != (cast_expression "(code *)(unaff_EDI + 0x1137)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1137)" ( (binary_expression "unaff_EDI + 0x1137" identifier + number_literal) )))) )) (compound_statement "{\n    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);\n  }" { (expression_statement "(**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);" (call_expression "(**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3)" (parenthesized_expression "(**(code **)(*param_4 + 0x10))" ( (pointer_expression "**(code **)(*param_4 + 0x10)" * (pointer_expression "*(code **)(*param_4 + 0x10)" * (cast_expression "(code **)(*param_4 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x10)" ( (binary_expression "*param_4 + 0x10" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "(param_4,param_1,param_2,param_3)" ( identifier , identifier , identifier , identifier ))) ;) })) (expression_statement "FUN_0007d2c0(param_1,param_5,param_2);" (call_expression "FUN_0007d2c0(param_1,param_5,param_2)" identifier (argument_list "(param_1,param_5,param_2)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00082750(param_1);" (call_expression "FUN_00082750(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;" (assignment_expression "pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22" identifier = (binary_expression "BYTE_ARRAY_0027a62d + unaff_EDI + 0x22" (binary_expression "BYTE_ARRAY_0027a62d + unaff_EDI" identifier + identifier) + number_literal)) ;) (expression_statement "iVar9 = *(int *)pbVar1;" (assignment_expression "iVar9 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (if_statement "if (*(int *)(iVar9 + 8) == 0) goto LAB_00088477;" if (parenthesized_expression "(*(int *)(iVar9 + 8) == 0)" ( (binary_expression "*(int *)(iVar9 + 8) == 0" (pointer_expression "*(int *)(iVar9 + 8)" * (cast_expression "(int *)(iVar9 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) (if_statement "if (*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */\n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */\n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }\n    local_8c = (int *)FUN_0017ebf0(0x24);\n                    /* try { // try from 00088b86 to 00088b8a has its CatchHandler @ 00088ca5 */\n    FUN_000ba6d0(local_8c,param_1 + 0x124);\n  }\n  else {\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }" if (parenthesized_expression "(*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0')" ( (binary_expression "*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar9 + 8) + 0x318d)" * (cast_expression "(char *)(*(int *)(iVar9 + 8) + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar9 + 8) + 0x318d)" ( (binary_expression "*(int *)(iVar9 + 8) + 0x318d" (pointer_expression "*(int *)(iVar9 + 8)" * (cast_expression "(int *)(iVar9 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */\n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */\n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }\n    local_8c = (int *)FUN_0017ebf0(0x24);\n                    /* try { // try from 00088b86 to 00088b8a has its CatchHandler @ 00088ca5 */\n    FUN_000ba6d0(local_8c,param_1 + 0x124);\n  }" { (if_statement "if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;" if (parenthesized_expression "(*(char *)(iVar9 + 0x10) == '\0')" ( (binary_expression "*(char *)(iVar9 + 0x10) == '\0'" (pointer_expression "*(char *)(iVar9 + 0x10)" * (cast_expression "(char *)(iVar9 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x10)" ( (binary_expression "iVar9 + 0x10" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00088c31;" goto statement_identifier ;)) (if_statement "if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */\n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */\n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }" if (parenthesized_expression "(*(char *)(iVar9 + 0x11) == '\0')" ( (binary_expression "*(char *)(iVar9 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar9 + 0x11)" * (cast_expression "(char *)(iVar9 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x11)" ( (binary_expression "iVar9 + 0x11" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */\n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */\n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }" { (expression_statement "iVar9 = *(int *)(param_1 + 4);" (assignment_expression "iVar9 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }" if (parenthesized_expression "((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0))" ( (binary_expression "(*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)" (parenthesized_expression "(*(char *)(iVar9 + 0xac) == '\0')" ( (binary_expression "*(char *)(iVar9 + 0xac) == '\0'" (pointer_expression "*(char *)(iVar9 + 0xac)" * (cast_expression "(char *)(iVar9 + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xac)" ( (binary_expression "iVar9 + 0xac" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)" ( (comma_expression "local_90 = 0, *(int *)(iVar9 + 0xbc) == 0" (assignment_expression "local_90 = 0" identifier = number_literal) , (binary_expression "*(int *)(iVar9 + 0xbc) == 0" (pointer_expression "*(int *)(iVar9 + 0xbc)" * (cast_expression "(int *)(iVar9 + 0xbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xbc)" ( (binary_expression "iVar9 + 0xbc" identifier + number_literal) )))) == number_literal)) ))) )) (compound_statement "{\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }" { (expression_statement "local_90 = FUN_0007f710(param_1,6,4);" (assignment_expression "local_90 = FUN_0007f710(param_1,6,4)" identifier = (call_expression "FUN_0007f710(param_1,6,4)" identifier (argument_list "(param_1,6,4)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "iVar9 = *(int *)(param_1 + 4);" (assignment_expression "iVar9 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) comment (expression_statement "FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);" (call_expression "FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0)" identifier (argument_list "(&local_5c,iVar9 + 0x68,param_1 + 0xa0)" ( (pointer_expression "&local_5c" & identifier) , (binary_expression "iVar9 + 0x68" identifier + number_literal) , (binary_expression "param_1 + 0xa0" identifier + number_literal) ))) ;) comment (expression_statement "FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);" (call_expression "FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c)" identifier (argument_list "(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c)" ( identifier , identifier , identifier , (pointer_expression "&local_6c" & identifier) , (pointer_expression "&local_74" & identifier) , (pointer_expression "&local_70" & identifier) , (pointer_expression "&local_68" & identifier) , (pointer_expression "&local_5c" & identifier) ))) ;) (expression_statement "iVar9 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar9 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }" { comment comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0)" identifier (argument_list "(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0)" ( (binary_expression "unaff_EDI + 0x198c47" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x19c67f" identifier + number_literal) , number_literal ))) ;) })) (if_statement "if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        FUN_00086960(param_1,param_4);\n      }" if (parenthesized_expression "(((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0))" ( (binary_expression "((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)" (parenthesized_expression "((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0))" ( (binary_expression "(*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)" (parenthesized_expression "(*(char *)(iVar9 + 0x1a25) == '\0')" ( (binary_expression "*(char *)(iVar9 + 0x1a25) == '\0'" (pointer_expression "*(char *)(iVar9 + 0x1a25)" * (cast_expression "(char *)(iVar9 + 0x1a25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x1a25)" ( (binary_expression "iVar9 + 0x1a25" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(int *)(iVar9 + 0x1f64) != 0)" ( (binary_expression "*(int *)(iVar9 + 0x1f64) != 0" (pointer_expression "*(int *)(iVar9 + 0x1f64)" * (cast_expression "(int *)(iVar9 + 0x1f64)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x1f64)" ( (binary_expression "iVar9 + 0x1f64" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(int *)(param_1 + 0x16c) == 0)" ( (binary_expression "*(int *)(param_1 + 0x16c) == 0" (pointer_expression "*(int *)(param_1 + 0x16c)" * (cast_expression "(int *)(param_1 + 0x16c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x16c)" ( (binary_expression "param_1 + 0x16c" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        FUN_00086960(param_1,param_4);\n      }" { comment (expression_statement "FUN_00086960(param_1,param_4);" (call_expression "FUN_00086960(param_1,param_4)" identifier (argument_list "(param_1,param_4)" ( identifier , identifier ))) ;) })) (expression_statement "FUN_000817a0(param_1,param_2,param_3);" (call_expression "FUN_000817a0(param_1,param_2,param_3)" identifier (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_001215b0(param_1 + 0xa0);" (call_expression "FUN_001215b0(param_1 + 0xa0)" identifier (argument_list "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))) ;) (expression_statement "FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);" (call_expression "FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c)" identifier (argument_list "(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c)" ( identifier , (pointer_expression "&local_5c" & identifier) , identifier , (binary_expression "local_70 + local_74" identifier + identifier) , (pointer_expression "&local_68" & identifier) , identifier ))) ;) (expression_statement "FUN_0007d800(param_1,param_3);" (call_expression "FUN_0007d800(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) (expression_statement "FUN_001459e0(&local_5c);" (call_expression "FUN_001459e0(&local_5c)" identifier (argument_list "(&local_5c)" ( (pointer_expression "&local_5c" & identifier) ))) ;) (if_statement "if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }" if (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_001807a0(local_68);\n      }" { (expression_statement "FUN_001807a0(local_68);" (call_expression "FUN_001807a0(local_68)" identifier (argument_list "(local_68)" ( identifier ))) ;) })) (expression_statement "uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);" (assignment_expression "uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c)" identifier = (call_expression "CONCAT44(local_5c._4_4_,(int *)local_5c)" identifier (argument_list "(local_5c._4_4_,(int *)local_5c)" ( (field_expression "local_5c._4_4_" identifier . field_identifier) , (cast_expression "(int *)local_5c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) (if_statement "if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }" if (parenthesized_expression "(*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0')" ( (binary_expression "*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0'" (pointer_expression "*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d)" * (cast_expression "(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) + 0x318d)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) + 0x318d" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }" { (expression_statement "local_8c = (int *)0x0;" (assignment_expression "local_8c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00087db2;" goto statement_identifier ;) })) }) (else_clause "else {\n      local_90 = 0;\n    }" else (compound_statement "{\n      local_90 = 0;\n    }" { (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) }))) (expression_statement "local_8c = (int *)FUN_0017ebf0(0x24);" (assignment_expression "local_8c = (int *)FUN_0017ebf0(0x24)" identifier = (cast_expression "(int *)FUN_0017ebf0(0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ebf0(0x24)" identifier (argument_list "(0x24)" ( number_literal ))))) ;) comment (expression_statement "FUN_000ba6d0(local_8c,param_1 + 0x124);" (call_expression "FUN_000ba6d0(local_8c,param_1 + 0x124)" identifier (argument_list "(local_8c,param_1 + 0x124)" ( identifier , (binary_expression "param_1 + 0x124" identifier + number_literal) ))) ;) }) (else_clause "else {\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }" else (compound_statement "{\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }" { (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (expression_statement "local_8c = (int *)0x0;" (assignment_expression "local_8c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_00087db2:\n  local_94 = (int *)FUN_0017ebf0(0x34);" statement_identifier : (expression_statement "local_94 = (int *)FUN_0017ebf0(0x34);" (assignment_expression "local_94 = (int *)FUN_0017ebf0(0x34)" identifier = (cast_expression "(int *)FUN_0017ebf0(0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ebf0(0x34)" identifier (argument_list "(0x34)" ( number_literal ))))) ;)) comment (expression_statement "FUN_000ba800(local_94,param_4,param_3,local_8c);" (call_expression "FUN_000ba800(local_94,param_4,param_3,local_8c)" identifier (argument_list "(local_94,param_4,param_3,local_8c)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_b0 = &local_5c;" (assignment_expression "local_b0 = &local_5c" identifier = (pointer_expression "&local_5c" & identifier)) ;) (expression_statement "local_5c._0_4_ = local_94;" (assignment_expression "local_5c._0_4_ = local_94" (field_expression "local_5c._0_4_" identifier . field_identifier) = identifier) ;) (expression_statement "FUN_0008a170(param_1 + 0x148,local_b0);" (call_expression "FUN_0008a170(param_1 + 0x148,local_b0)" identifier (argument_list "(param_1 + 0x148,local_b0)" ( (binary_expression "param_1 + 0x148" identifier + number_literal) , identifier ))) ;) (if_statement "if (local_8c != (int *)0x0) {\n    local_5c._0_4_ = local_8c;\n    FUN_0008a170(param_1 + 0x148,local_b0);\n  }" if (parenthesized_expression "(local_8c != (int *)0x0)" ( (binary_expression "local_8c != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_5c._0_4_ = local_8c;\n    FUN_0008a170(param_1 + 0x148,local_b0);\n  }" { (expression_statement "local_5c._0_4_ = local_8c;" (assignment_expression "local_5c._0_4_ = local_8c" (field_expression "local_5c._0_4_" identifier . field_identifier) = identifier) ;) (expression_statement "FUN_0008a170(param_1 + 0x148,local_b0);" (call_expression "FUN_0008a170(param_1 + 0x148,local_b0)" identifier (argument_list "(param_1 + 0x148,local_b0)" ( (binary_expression "param_1 + 0x148" identifier + number_literal) , identifier ))) ;) })) (if_statement "if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n    pcVar13 = *(code **)(*param_4 + 0x68);\n    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }\nLAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);\nLAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;\n  }\n  else {\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }" if (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" * (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" ( (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n    pcVar13 = *(code **)(*param_4 + 0x68);\n    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }\nLAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);\nLAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;\n  }" { (expression_statement "iVar9 = *(int *)pbVar1;" (assignment_expression "iVar9 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar8 = *(int *)(iVar9 + 8);" (assignment_expression "iVar8 = *(int *)(iVar9 + 8)" identifier = (pointer_expression "*(int *)(iVar9 + 8)" * (cast_expression "(int *)(iVar9 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 != 0) goto LAB_00087e3a;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00087e3a;" goto statement_identifier ;)) (labeled_statement "LAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);" statement_identifier : (expression_statement "uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);" (assignment_expression "uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c)" identifier = (call_expression "CONCAT44(local_5c._4_4_,(int *)local_5c)" identifier (argument_list "(local_5c._4_4_,(int *)local_5c)" ( (field_expression "local_5c._4_4_" identifier . field_identifier) , (cast_expression "(int *)local_5c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;)) (expression_statement "pcVar13 = *(code **)(*param_4 + 0x68);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x68)" identifier = (pointer_expression "*(code **)(*param_4 + 0x68)" * (cast_expression "(code **)(*param_4 + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x68)" ( (binary_expression "*param_4 + 0x68" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }" if (parenthesized_expression "(pcVar13 == (code *)(unaff_EDI + 0x1497))" ( (binary_expression "pcVar13 == (code *)(unaff_EDI + 0x1497)" identifier == (cast_expression "(code *)(unaff_EDI + 0x1497)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1497)" ( (binary_expression "unaff_EDI + 0x1497" identifier + number_literal) )))) )) (compound_statement "{\nLAB_00088477:\n      local_5c = uVar19;\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }" { (labeled_statement "LAB_00088477:\n      local_5c = uVar19;" statement_identifier : (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;)) comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f)" identifier (argument_list "(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f)" ( (binary_expression "unaff_EDI + 0x198c47" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x19c67f" identifier + number_literal) ))) ;) })) (labeled_statement "LAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);" statement_identifier : (expression_statement "cVar7 = (*pcVar13)(param_4);" (assignment_expression "cVar7 = (*pcVar13)(param_4)" identifier = (call_expression "(*pcVar13)(param_4)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_4)" ( identifier )))) ;)) (labeled_statement "LAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;" statement_identifier : (if_statement "if (cVar7 == '\0') goto LAB_00087e72;" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00087e72;" goto statement_identifier ;))) }) (else_clause "else {\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }" else (compound_statement "{\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }" { (expression_statement "FUN_0007d230(param_1);" (call_expression "FUN_0007d230(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "iVar9 = *(int *)pbVar1;" (assignment_expression "iVar9 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar8 = *(int *)(iVar9 + 8);" (assignment_expression "iVar8 = *(int *)(iVar9 + 8)" identifier = (pointer_expression "*(int *)(iVar9 + 8)" * (cast_expression "(int *)(iVar9 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) goto LAB_00088adb;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00088adb;" goto statement_identifier ;)) (labeled_statement "LAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }" statement_identifier : (if_statement "if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }" if (parenthesized_expression "((*(byte *)(iVar9 + 0x14) & 8) == 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x14) & 8) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x14) & 8)" ( (binary_expression "*(byte *)(iVar9 + 0x14) & 8" (pointer_expression "*(byte *)(iVar9 + 0x14)" * (cast_expression "(byte *)(iVar9 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x14)" ( (binary_expression "iVar9 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }" { (expression_statement "pcVar13 = *(code **)(*param_4 + 0x68);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x68)" identifier = (pointer_expression "*(code **)(*param_4 + 0x68)" * (cast_expression "(code **)(*param_4 + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x68)" ( (binary_expression "*param_4 + 0x68" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;" if (parenthesized_expression "(pcVar13 != (code *)(unaff_EDI + 0x1497))" ( (binary_expression "pcVar13 != (code *)(unaff_EDI + 0x1497)" identifier != (cast_expression "(code *)(unaff_EDI + 0x1497)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1497)" ( (binary_expression "unaff_EDI + 0x1497" identifier + number_literal) )))) )) (goto_statement "goto LAB_00088af4;" goto statement_identifier ;)) (expression_statement "cVar7 = *(char *)(iVar8 + 0x3209);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x3209)" identifier = (pointer_expression "*(char *)(iVar8 + 0x3209)" * (cast_expression "(char *)(iVar8 + 0x3209)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x3209)" ( (binary_expression "iVar8 + 0x3209" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00087e60;" goto statement_identifier ;) }))) }))) (expression_statement "FUN_00083a60(param_1);" (call_expression "FUN_00083a60(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (labeled_statement "LAB_00087e72:\n  local_88 = 0;" statement_identifier : (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00087e80:\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }" statement_identifier : (if_statement "if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }" if (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" * (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" ( (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }" { (expression_statement "iVar9 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar9 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (if_statement "if (iVar9 == 0) goto LAB_00088477;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }" if (parenthesized_expression "(*(char *)(iVar9 + 0x318d) == '\0')" ( (binary_expression "*(char *)(iVar9 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar9 + 0x318d)" * (cast_expression "(char *)(iVar9 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x318d)" ( (binary_expression "iVar9 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }" { (expression_statement "local_80 = FUN_00081670(param_1,param_4);" (assignment_expression "local_80 = FUN_00081670(param_1,param_4)" identifier = (call_expression "FUN_00081670(param_1,param_4)" identifier (argument_list "(param_1,param_4)" ( identifier , identifier )))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (goto_statement "goto LAB_00088944;" goto statement_identifier ;) })) }) (else_clause "else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }" else (compound_statement "{\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }" { (expression_statement "local_80 = FUN_0007d1e0(param_1,param_3);" (assignment_expression "local_80 = FUN_0007d1e0(param_1,param_3)" identifier = (call_expression "FUN_0007d1e0(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier )))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (labeled_statement "LAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);" statement_identifier : (expression_statement "iVar9 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar9 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;)) (if_statement "if (iVar9 == 0) goto LAB_00088477;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) })))) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "iVar8 = FUN_000aa690(iVar9);" (assignment_expression "iVar8 = FUN_000aa690(iVar9)" identifier = (call_expression "FUN_000aa690(iVar9)" identifier (argument_list "(iVar9)" ( identifier )))) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (if_statement "if (iVar8 == 0) {\n    iVar9 = local_80;\n  }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar9 = local_80;\n  }" { (expression_statement "iVar9 = local_80;" (assignment_expression "iVar9 = local_80" identifier = identifier) ;) })) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (if_statement "if (iVar8 != 0) {\n    iVar16 = param_4[1];\n    if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }\n    iVar16 = local_90;\n    if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (iVar9 == 0) goto LAB_00087f2e;\n    local_80 = iVar9;\n    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar7 != '\0') goto LAB_000887ba;\n    if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }\n    if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }\n    uVar14 = local_94[3] + local_8c[3];\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0007a620();\n    }\n    local_a0 = *(int *)(iVar8 + 0x521c);\n    local_a4 = *(int *)(iVar8 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }\n    uVar3 = *(uint *)(iVar9 + 0x164);\n    uVar4 = *(uint *)(iVar9 + 0x168);\n    uVar17 = uVar3 - uVar14 & -local_a4;\n    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar11 = uVar3 - uVar17;\n    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar7 != '\0') goto LAB_00087f7a;\n    local_80 = 0;\n    uVar19 = local_5c;\nLAB_00087f52:\n    local_5c = uVar19;\n    if (iVar16 != 0) goto LAB_00087f5a;\n    iVar9 = *(int *)(param_1 + 4);\n    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;\nLAB_00087fc3:\n    iVar9 = local_88;\n    local_68 = 1;\n    local_5c = uVar19;\n    if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar9 + 1;\n    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);\n    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }\n    uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n    piVar12 = *(int **)(param_1 + 0x13c);\n    iVar9 = local_68;\n    if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }\nLAB_00088157:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar7 = FUN_0007a5f0();\n    iVar8 = extraout_ECX;\n    iVar16 = local_90;\nLAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    iVar9 = *(int *)(param_1 + 4);\n    uVar19 = local_5c;\n    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;\nLAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;\n    if (iVar8 != 0) goto code_r0x00087faf;\n  }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar16 = param_4[1];\n    if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }\n    iVar16 = local_90;\n    if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (iVar9 == 0) goto LAB_00087f2e;\n    local_80 = iVar9;\n    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar7 != '\0') goto LAB_000887ba;\n    if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }\n    if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }\n    uVar14 = local_94[3] + local_8c[3];\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0007a620();\n    }\n    local_a0 = *(int *)(iVar8 + 0x521c);\n    local_a4 = *(int *)(iVar8 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }\n    uVar3 = *(uint *)(iVar9 + 0x164);\n    uVar4 = *(uint *)(iVar9 + 0x168);\n    uVar17 = uVar3 - uVar14 & -local_a4;\n    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar11 = uVar3 - uVar17;\n    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar7 != '\0') goto LAB_00087f7a;\n    local_80 = 0;\n    uVar19 = local_5c;\nLAB_00087f52:\n    local_5c = uVar19;\n    if (iVar16 != 0) goto LAB_00087f5a;\n    iVar9 = *(int *)(param_1 + 4);\n    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;\nLAB_00087fc3:\n    iVar9 = local_88;\n    local_68 = 1;\n    local_5c = uVar19;\n    if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar9 + 1;\n    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);\n    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }\n    uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n    piVar12 = *(int **)(param_1 + 0x13c);\n    iVar9 = local_68;\n    if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }\nLAB_00088157:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar7 = FUN_0007a5f0();\n    iVar8 = extraout_ECX;\n    iVar16 = local_90;\nLAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    iVar9 = *(int *)(param_1 + 4);\n    uVar19 = local_5c;\n    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;\nLAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;\n    if (iVar8 != 0) goto code_r0x00087faf;\n  }" { (expression_statement "iVar16 = param_4[1];" (assignment_expression "iVar16 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (if_statement "if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }" if (parenthesized_expression "(*(char *)(iVar16 + 0x30) == '\0')" ( (binary_expression "*(char *)(iVar16 + 0x30) == '\0'" (pointer_expression "*(char *)(iVar16 + 0x30)" * (cast_expression "(char *)(iVar16 + 0x30)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x30)" ( (binary_expression "iVar16 + 0x30" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }" { (if_statement "if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }" if (parenthesized_expression "(*(char *)(iVar8 + 0x41b8) != '\0')" ( (binary_expression "*(char *)(iVar8 + 0x41b8) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x41b8)" * (cast_expression "(char *)(iVar8 + 0x41b8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x41b8)" ( (binary_expression "iVar8 + 0x41b8" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }" { (expression_statement "local_98 = *(int *)(iVar8 + 0x521c);" (assignment_expression "local_98 = *(int *)(iVar8 + 0x521c)" identifier = (pointer_expression "*(int *)(iVar8 + 0x521c)" * (cast_expression "(int *)(iVar8 + 0x521c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x521c)" ( (binary_expression "iVar8 + 0x521c" identifier + number_literal) ))))) ;) (expression_statement "local_9c = *(int *)(iVar8 + 0x5218);" (assignment_expression "local_9c = *(int *)(iVar8 + 0x5218)" identifier = (pointer_expression "*(int *)(iVar8 + 0x5218)" * (cast_expression "(int *)(iVar8 + 0x5218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x5218)" ( (binary_expression "iVar8 + 0x5218" identifier + number_literal) ))))) ;) (if_statement "if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }" if (parenthesized_expression "(local_98 == 0 && local_9c == 0)" ( (binary_expression "local_98 == 0 && local_9c == 0" (binary_expression "local_98 == 0" identifier == number_literal) && (binary_expression "local_9c == 0" identifier == number_literal)) )) (compound_statement "{\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }" { (expression_statement "local_9c = *(int *)(iVar16 + 0x20);" (assignment_expression "local_9c = *(int *)(iVar16 + 0x20)" identifier = (pointer_expression "*(int *)(iVar16 + 0x20)" * (cast_expression "(int *)(iVar16 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x20)" ( (binary_expression "iVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_98 = *(int *)(iVar16 + 0x24);" (assignment_expression "local_98 = *(int *)(iVar16 + 0x24)" identifier = (pointer_expression "*(int *)(iVar16 + 0x24)" * (cast_expression "(int *)(iVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x24)" ( (binary_expression "iVar16 + 0x24" identifier + number_literal) ))))) ;) })) (expression_statement "lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);" (assignment_expression "lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98)" identifier = (call_expression "FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98)" identifier (argument_list "(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98)" ( (pointer_expression "*(undefined4 *)(iVar8 + 0x41bc)" * (cast_expression "(undefined4 *)(iVar8 + 0x41bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x41bc)" ( (binary_expression "iVar8 + 0x41bc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar8 + 0x41c0)" * (cast_expression "(undefined4 *)(iVar8 + 0x41c0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x41c0)" ( (binary_expression "iVar8 + 0x41c0" identifier + number_literal) )))) , identifier , identifier )))) ;) (goto_statement "goto joined_r0x0008887a;" goto statement_identifier ;) })) }) (else_clause "else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }" else (if_statement "if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }" if (parenthesized_expression "(*(char *)(iVar8 + 0x423c) != '\0')" ( (binary_expression "*(char *)(iVar8 + 0x423c) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x423c)" * (cast_expression "(char *)(iVar8 + 0x423c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x423c)" ( (binary_expression "iVar8 + 0x423c" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }" { (expression_statement "local_98 = *(int *)(iVar8 + 0x521c);" (assignment_expression "local_98 = *(int *)(iVar8 + 0x521c)" identifier = (pointer_expression "*(int *)(iVar8 + 0x521c)" * (cast_expression "(int *)(iVar8 + 0x521c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x521c)" ( (binary_expression "iVar8 + 0x521c" identifier + number_literal) ))))) ;) (expression_statement "local_9c = *(int *)(iVar8 + 0x5218);" (assignment_expression "local_9c = *(int *)(iVar8 + 0x5218)" identifier = (pointer_expression "*(int *)(iVar8 + 0x5218)" * (cast_expression "(int *)(iVar8 + 0x5218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x5218)" ( (binary_expression "iVar8 + 0x5218" identifier + number_literal) ))))) ;) (if_statement "if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }" if (parenthesized_expression "(local_98 == 0 && local_9c == 0)" ( (binary_expression "local_98 == 0 && local_9c == 0" (binary_expression "local_98 == 0" identifier == number_literal) && (binary_expression "local_9c == 0" identifier == number_literal)) )) (compound_statement "{\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }" { (expression_statement "local_9c = *(int *)(iVar16 + 0x20);" (assignment_expression "local_9c = *(int *)(iVar16 + 0x20)" identifier = (pointer_expression "*(int *)(iVar16 + 0x20)" * (cast_expression "(int *)(iVar16 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x20)" ( (binary_expression "iVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_98 = *(int *)(iVar16 + 0x24);" (assignment_expression "local_98 = *(int *)(iVar16 + 0x24)" identifier = (pointer_expression "*(int *)(iVar16 + 0x24)" * (cast_expression "(int *)(iVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x24)" ( (binary_expression "iVar16 + 0x24" identifier + number_literal) ))))) ;) })) (expression_statement "lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);" (assignment_expression "lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98)" identifier = (call_expression "FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98)" identifier (argument_list "(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98)" ( (pointer_expression "*(undefined4 *)(iVar8 + 0x4240)" * (cast_expression "(undefined4 *)(iVar8 + 0x4240)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4240)" ( (binary_expression "iVar8 + 0x4240" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar8 + 0x4244)" * (cast_expression "(undefined4 *)(iVar8 + 0x4244)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4244)" ( (binary_expression "iVar8 + 0x4244" identifier + number_literal) )))) , identifier , identifier )))) ;) (labeled_statement "joined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }" statement_identifier : (if_statement "if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }" if (parenthesized_expression "(lVar20 != 0)" ( (binary_expression "lVar20 != 0" identifier != number_literal) )) (compound_statement "{\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }" { (expression_statement "cVar7 = *(char *)(iVar8 + 0x318d);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x318d)" identifier = (pointer_expression "*(char *)(iVar8 + 0x318d)" * (cast_expression "(char *)(iVar8 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x318d)" ( (binary_expression "iVar8 + 0x318d" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00087f2e;" goto statement_identifier ;) }))) })))) (expression_statement "iVar16 = local_90;" (assignment_expression "iVar16 = local_90" identifier = identifier) ;) (if_statement "if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }" if (parenthesized_expression "((local_90 != 0) && (iVar9 == 0))" ( (binary_expression "(local_90 != 0) && (iVar9 == 0)" (parenthesized_expression "(local_90 != 0)" ( (binary_expression "local_90 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }" { (if_statement "if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }" if (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" * (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" ( (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }" { comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f)" identifier (argument_list "(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f)" ( (binary_expression "unaff_EDI + 0x19b1cf" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x19c44f" identifier + number_literal) ))) ;) })) (expression_statement "cVar7 = *(char *)(iVar8 + 0x318d);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x318d)" identifier = (pointer_expression "*(char *)(iVar8 + 0x318d)" * (cast_expression "(char *)(iVar8 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x318d)" ( (binary_expression "iVar8 + 0x318d" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00087f2e;" goto statement_identifier ;) })) (expression_statement "cVar7 = *(char *)(iVar8 + 0x318d);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x318d)" identifier = (pointer_expression "*(char *)(iVar8 + 0x318d)" * (cast_expression "(char *)(iVar8 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x318d)" ( (binary_expression "iVar8 + 0x318d" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) goto LAB_00087f2e;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00087f2e;" goto statement_identifier ;)) (expression_statement "local_80 = iVar9;" (assignment_expression "local_80 = iVar9" identifier = identifier) ;) (if_statement "if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }" if (parenthesized_expression "(((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))" ( (binary_expression "((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0')" (parenthesized_expression "((*(byte *)(iVar9 + 0x19c) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x19c) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x19c) & 2)" ( (binary_expression "*(byte *)(iVar9 + 0x19c) & 2" (pointer_expression "*(byte *)(iVar9 + 0x19c)" * (cast_expression "(byte *)(iVar9 + 0x19c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x19c)" ( (binary_expression "iVar9 + 0x19c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" * (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" ( (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }" { (if_statement "if (cVar7 != '\0') goto LAB_000887ba;" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000887ba;" goto statement_identifier ;)) (goto_statement "goto LAB_00087f39;" goto statement_identifier ;) })) (if_statement "if (cVar7 != '\0') goto LAB_000887ba;" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000887ba;" goto statement_identifier ;)) (if_statement "if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }" if (parenthesized_expression "((*(byte *)(local_94 + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_94 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_94 + 7) & 2)" ( (binary_expression "*(byte *)(local_94 + 7) & 2" (pointer_expression "*(byte *)(local_94 + 7)" * (cast_expression "(byte *)(local_94 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_94 + 7)" ( (binary_expression "local_94 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }" { (expression_statement "(**(code **)(*local_94 + 0x38))(local_94);" (call_expression "(**(code **)(*local_94 + 0x38))(local_94)" (parenthesized_expression "(**(code **)(*local_94 + 0x38))" ( (pointer_expression "**(code **)(*local_94 + 0x38)" * (pointer_expression "*(code **)(*local_94 + 0x38)" * (cast_expression "(code **)(*local_94 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_94 + 0x38)" ( (binary_expression "*local_94 + 0x38" (pointer_expression "*local_94" * identifier) + number_literal) ))))) )) (argument_list "(local_94)" ( identifier ))) ;) (if_statement "if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;" if (parenthesized_expression "((*(byte *)(local_94 + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_94 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_94 + 7) & 2)" ( (binary_expression "*(byte *)(local_94 + 7) & 2" (pointer_expression "*(byte *)(local_94 + 7)" * (cast_expression "(byte *)(local_94 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_94 + 7)" ( (binary_expression "local_94 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00088c5f;" goto statement_identifier ;)) })) (if_statement "if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }" if (parenthesized_expression "((*(byte *)(local_8c + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_8c + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_8c + 7) & 2)" ( (binary_expression "*(byte *)(local_8c + 7) & 2" (pointer_expression "*(byte *)(local_8c + 7)" * (cast_expression "(byte *)(local_8c + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_8c + 7)" ( (binary_expression "local_8c + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }" { (expression_statement "(**(code **)(*local_8c + 0x38))(local_8c);" (call_expression "(**(code **)(*local_8c + 0x38))(local_8c)" (parenthesized_expression "(**(code **)(*local_8c + 0x38))" ( (pointer_expression "**(code **)(*local_8c + 0x38)" * (pointer_expression "*(code **)(*local_8c + 0x38)" * (cast_expression "(code **)(*local_8c + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_8c + 0x38)" ( (binary_expression "*local_8c + 0x38" (pointer_expression "*local_8c" * identifier) + number_literal) ))))) )) (argument_list "(local_8c)" ( identifier ))) ;) (if_statement "if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }" if (parenthesized_expression "((*(byte *)(local_8c + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_8c + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_8c + 7) & 2)" ( (binary_expression "*(byte *)(local_8c + 7) & 2" (pointer_expression "*(byte *)(local_8c + 7)" * (cast_expression "(byte *)(local_8c + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_8c + 7)" ( (binary_expression "local_8c + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }" { (labeled_statement "LAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);" statement_identifier : comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1)" identifier (argument_list "(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1)" ( (binary_expression "unaff_EDI + 0x1998e3" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x19c43b" identifier + number_literal) , identifier ))) ;)) })) (if_statement "if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }" if (parenthesized_expression "((*(byte *)(local_94 + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_94 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_94 + 7) & 2)" ( (binary_expression "*(byte *)(local_94 + 7) & 2" (pointer_expression "*(byte *)(local_94 + 7)" * (cast_expression "(byte *)(local_94 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_94 + 7)" ( (binary_expression "local_94 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }" { comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c)" identifier (argument_list "(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c)" ( (binary_expression "unaff_EDI + 0x1998e3" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x19c68f" identifier + number_literal) , identifier ))) ;) })) })) (expression_statement "uVar14 = local_94[3] + local_8c[3];" (assignment_expression "uVar14 = local_94[3] + local_8c[3]" identifier = (binary_expression "local_94[3] + local_8c[3]" (subscript_expression "local_94[3]" identifier [ number_literal ]) + (subscript_expression "local_8c[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0007a620();\n    }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0007a620();\n    }" { comment (expression_statement "FUN_0007a620();" (call_expression "FUN_0007a620()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_a0 = *(int *)(iVar8 + 0x521c);" (assignment_expression "local_a0 = *(int *)(iVar8 + 0x521c)" identifier = (pointer_expression "*(int *)(iVar8 + 0x521c)" * (cast_expression "(int *)(iVar8 + 0x521c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x521c)" ( (binary_expression "iVar8 + 0x521c" identifier + number_literal) ))))) ;) (expression_statement "local_a4 = *(int *)(iVar8 + 0x5218);" (assignment_expression "local_a4 = *(int *)(iVar8 + 0x5218)" identifier = (pointer_expression "*(int *)(iVar8 + 0x5218)" * (cast_expression "(int *)(iVar8 + 0x5218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x5218)" ( (binary_expression "iVar8 + 0x5218" identifier + number_literal) ))))) ;) (if_statement "if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }" if (parenthesized_expression "(local_a0 == 0 && local_a4 == 0)" ( (binary_expression "local_a0 == 0 && local_a4 == 0" (binary_expression "local_a0 == 0" identifier == number_literal) && (binary_expression "local_a4 == 0" identifier == number_literal)) )) (compound_statement "{\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }" { (expression_statement "local_a0 = *(int *)(param_4[1] + 0x24);" (assignment_expression "local_a0 = *(int *)(param_4[1] + 0x24)" identifier = (pointer_expression "*(int *)(param_4[1] + 0x24)" * (cast_expression "(int *)(param_4[1] + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[1] + 0x24)" ( (binary_expression "param_4[1] + 0x24" (subscript_expression "param_4[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "local_a4 = *(int *)(param_4[1] + 0x20);" (assignment_expression "local_a4 = *(int *)(param_4[1] + 0x20)" identifier = (pointer_expression "*(int *)(param_4[1] + 0x20)" * (cast_expression "(int *)(param_4[1] + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[1] + 0x20)" ( (binary_expression "param_4[1] + 0x20" (subscript_expression "param_4[1]" identifier [ number_literal ]) + number_literal) ))))) ;) })) (expression_statement "uVar3 = *(uint *)(iVar9 + 0x164);" (assignment_expression "uVar3 = *(uint *)(iVar9 + 0x164)" identifier = (pointer_expression "*(uint *)(iVar9 + 0x164)" * (cast_expression "(uint *)(iVar9 + 0x164)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x164)" ( (binary_expression "iVar9 + 0x164" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(iVar9 + 0x168);" (assignment_expression "uVar4 = *(uint *)(iVar9 + 0x168)" identifier = (pointer_expression "*(uint *)(iVar9 + 0x168)" * (cast_expression "(uint *)(iVar9 + 0x168)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x168)" ( (binary_expression "iVar9 + 0x168" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = uVar3 - uVar14 & -local_a4;" (assignment_expression "uVar17 = uVar3 - uVar14 & -local_a4" identifier = (binary_expression "uVar3 - uVar14 & -local_a4" (binary_expression "uVar3 - uVar14" identifier - identifier) & (unary_expression "-local_a4" - identifier))) ;) (expression_statement "uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));" (assignment_expression "uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0))" identifier = (binary_expression "uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0))" (binary_expression "uVar4 - (uVar3 < uVar14)" identifier - (parenthesized_expression "(uVar3 < uVar14)" ( (binary_expression "uVar3 < uVar14" identifier < identifier) ))) & (unary_expression "-(local_a0 + (uint)(local_a4 != 0))" - (parenthesized_expression "(local_a0 + (uint)(local_a4 != 0))" ( (binary_expression "local_a0 + (uint)(local_a4 != 0)" identifier + (call_expression "(uint)(local_a4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_a4 != 0)" ( (binary_expression "local_a4 != 0" identifier != number_literal) )))) ))))) ;) (expression_statement "uVar11 = uVar3 - uVar17;" (assignment_expression "uVar11 = uVar3 - uVar17" identifier = (binary_expression "uVar3 - uVar17" identifier - identifier)) ;) (expression_statement "uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);" (assignment_expression "uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17)" identifier = (binary_expression "(uVar4 - uVar18) - (uint)(uVar3 < uVar17)" (parenthesized_expression "(uVar4 - uVar18)" ( (binary_expression "uVar4 - uVar18" identifier - identifier) )) - (call_expression "(uint)(uVar3 < uVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < uVar17)" ( (binary_expression "uVar3 < uVar17" identifier < identifier) ))))) ;) (expression_statement "cVar7 = *(char *)(iVar8 + 0x318d);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x318d)" identifier = (pointer_expression "*(char *)(iVar8 + 0x318d)" * (cast_expression "(char *)(iVar8 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x318d)" ( (binary_expression "iVar8 + 0x318d" identifier + number_literal) ))))) ;) (if_statement "if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }" if (parenthesized_expression "(uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15)" ( (binary_expression "uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15" (binary_expression "uVar15 <= uVar4" identifier <= identifier) && (binary_expression "(uint)(uVar3 < uVar11) <= uVar4 - uVar15" (call_expression "(uint)(uVar3 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < uVar11)" ( (binary_expression "uVar3 < uVar11" identifier < identifier) ))) <= (binary_expression "uVar4 - uVar15" identifier - identifier))) )) (compound_statement "{\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }" { (expression_statement "uVar5 = *(uint *)(iVar9 + 0x160);" (assignment_expression "uVar5 = *(uint *)(iVar9 + 0x160)" identifier = (pointer_expression "*(uint *)(iVar9 + 0x160)" * (cast_expression "(uint *)(iVar9 + 0x160)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x160)" ( (binary_expression "iVar9 + 0x160" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)(iVar9 + 0x15c);" (assignment_expression "uVar6 = *(uint *)(iVar9 + 0x15c)" identifier = (pointer_expression "*(uint *)(iVar9 + 0x15c)" * (cast_expression "(uint *)(iVar9 + 0x15c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x15c)" ( (binary_expression "iVar9 + 0x15c" identifier + number_literal) ))))) ;) (if_statement "if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }" if (parenthesized_expression "(uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15)" ( (binary_expression "uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15" (binary_expression "uVar15 <= uVar5" identifier <= identifier) && (binary_expression "(uint)(uVar6 < uVar11) <= uVar5 - uVar15" (call_expression "(uint)(uVar6 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < uVar11)" ( (binary_expression "uVar6 < uVar11" identifier < identifier) ))) <= (binary_expression "uVar5 - uVar15" identifier - identifier))) )) (compound_statement "{\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }" { (expression_statement "*(uint *)(iVar9 + 0x164) = uVar17;" (assignment_expression "*(uint *)(iVar9 + 0x164) = uVar17" (pointer_expression "*(uint *)(iVar9 + 0x164)" * (cast_expression "(uint *)(iVar9 + 0x164)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x164)" ( (binary_expression "iVar9 + 0x164" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;" (assignment_expression "*(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17" (pointer_expression "*(uint *)(iVar9 + 0x15c)" * (cast_expression "(uint *)(iVar9 + 0x15c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x15c)" ( (binary_expression "iVar9 + 0x15c" identifier + number_literal) )))) = (binary_expression "(uVar6 - uVar3) + uVar17" (parenthesized_expression "(uVar6 - uVar3)" ( (binary_expression "uVar6 - uVar3" identifier - identifier) )) + identifier)) ;) (expression_statement "*(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;" (assignment_expression "*(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)" (pointer_expression "*(uint *)(iVar9 + 0x160)" * (cast_expression "(uint *)(iVar9 + 0x160)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x160)" ( (binary_expression "iVar9 + 0x160" identifier + number_literal) )))) = (binary_expression "((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)" (binary_expression "((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18" (parenthesized_expression "((uVar5 - uVar4) - (uint)(uVar6 < uVar3))" ( (binary_expression "(uVar5 - uVar4) - (uint)(uVar6 < uVar3)" (parenthesized_expression "(uVar5 - uVar4)" ( (binary_expression "uVar5 - uVar4" identifier - identifier) )) - (call_expression "(uint)(uVar6 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < uVar3)" ( (binary_expression "uVar6 < uVar3" identifier < identifier) )))) )) + identifier) + (cast_expression "(uint)CARRY4(uVar6 - uVar3,uVar17)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar6 - uVar3,uVar17)" identifier (argument_list "(uVar6 - uVar3,uVar17)" ( (binary_expression "uVar6 - uVar3" identifier - identifier) , identifier )))))) ;) (expression_statement "*(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;" (assignment_expression "*(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar9 + 0x19c)" * (cast_expression "(byte *)(iVar9 + 0x19c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x19c)" ( (binary_expression "iVar9 + 0x19c" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar9 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar9 + 0x19c)" * (cast_expression "(byte *)(iVar9 + 0x19c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x19c)" ( (binary_expression "iVar9 + 0x19c" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(uint *)(iVar9 + 0x168) = uVar18;" (assignment_expression "*(uint *)(iVar9 + 0x168) = uVar18" (pointer_expression "*(uint *)(iVar9 + 0x168)" * (cast_expression "(uint *)(iVar9 + 0x168)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x168)" ( (binary_expression "iVar9 + 0x168" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = uVar15 - (uVar11 < uVar14);" (assignment_expression "iVar8 = uVar15 - (uVar11 < uVar14)" identifier = (binary_expression "uVar15 - (uVar11 < uVar14)" identifier - (parenthesized_expression "(uVar11 < uVar14)" ( (binary_expression "uVar11 < uVar14" identifier < identifier) )))) ;) (if_statement "if (cVar7 != '\0') goto LAB_000887ba;" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000887ba;" goto statement_identifier ;)) (if_statement "if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;" if (parenthesized_expression "(uVar11 - uVar14 == 0 && iVar8 == 0)" ( (binary_expression "uVar11 - uVar14 == 0 && iVar8 == 0" (binary_expression "uVar11 - uVar14 == 0" (binary_expression "uVar11 - uVar14" identifier - identifier) == number_literal) && (binary_expression "iVar8 == 0" identifier == number_literal)) )) (goto_statement "goto LAB_0008878f;" goto statement_identifier ;)) (if_statement "if (iVar9 == 0) goto LAB_0008878f;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008878f;" goto statement_identifier ;)) (expression_statement "piVar12 = (int *)FUN_0017ebf0(0x2c);" (assignment_expression "piVar12 = (int *)FUN_0017ebf0(0x2c)" identifier = (cast_expression "(int *)FUN_0017ebf0(0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ebf0(0x2c)" identifier (argument_list "(0x2c)" ( number_literal ))))) ;) (expression_statement "piVar12[1] = 0;" (assignment_expression "piVar12[1] = 0" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[3] = uVar11 - uVar14;" (assignment_expression "piVar12[3] = uVar11 - uVar14" (subscript_expression "piVar12[3]" identifier [ number_literal ]) = (binary_expression "uVar11 - uVar14" identifier - identifier)) ;) (expression_statement "piVar12[2] = 0;" (assignment_expression "piVar12[2] = 0" (subscript_expression "piVar12[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[8] = 0;" (assignment_expression "piVar12[8] = 0" (subscript_expression "piVar12[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[9] = 1;" (assignment_expression "piVar12[9] = 1" (subscript_expression "piVar12[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;" (assignment_expression "*(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10" (pointer_expression "*(byte *)(piVar12 + 7)" * (cast_expression "(byte *)(piVar12 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 7)" ( (binary_expression "piVar12 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar12 + 7) & 0xe0 | 10" (binary_expression "*(byte *)(piVar12 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar12 + 7)" * (cast_expression "(byte *)(piVar12 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 7)" ( (binary_expression "piVar12 + 7" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "piVar12[10] = 0;" (assignment_expression "piVar12[10] = 0" (subscript_expression "piVar12[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[4] = iVar8;" (assignment_expression "piVar12[4] = iVar8" (subscript_expression "piVar12[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar12[5] = -1;" (assignment_expression "piVar12[5] = -1" (subscript_expression "piVar12[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[6] = -1;" (assignment_expression "piVar12[6] = -1" (subscript_expression "piVar12[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar12 = unaff_EDI + 0x2759db;" (assignment_expression "*piVar12 = unaff_EDI + 0x2759db" (pointer_expression "*piVar12" * identifier) = (binary_expression "unaff_EDI + 0x2759db" identifier + number_literal)) ;) (expression_statement "FUN_000bee40(iVar9,piVar12);" (call_expression "FUN_000bee40(iVar9,piVar12)" identifier (argument_list "(iVar9,piVar12)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_0008878f;" goto statement_identifier ;) })) })) (if_statement "if (cVar7 != '\0') goto LAB_00087f7a;" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00087f7a;" goto statement_identifier ;)) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (labeled_statement "LAB_00087f52:\n    local_5c = uVar19;" statement_identifier : (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;)) (if_statement "if (iVar16 != 0) goto LAB_00087f5a;" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00087f5a;" goto statement_identifier ;)) (expression_statement "iVar9 = *(int *)(param_1 + 4);" (assignment_expression "iVar9 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;" if (parenthesized_expression "(*(char *)(iVar9 + 0xac) != '\0')" ( (binary_expression "*(char *)(iVar9 + 0xac) != '\0'" (pointer_expression "*(char *)(iVar9 + 0xac)" * (cast_expression "(char *)(iVar9 + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xac)" ( (binary_expression "iVar9 + 0xac" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00087f99;" goto statement_identifier ;)) (labeled_statement "LAB_00087fc3:\n    iVar9 = local_88;" statement_identifier : (expression_statement "iVar9 = local_88;" (assignment_expression "iVar9 = local_88" identifier = identifier) ;)) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" identifier = number_literal) ;) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (if_statement "if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }" if (parenthesized_expression "(*(char *)(iVar8 + 0x318d) == '\0')" ( (binary_expression "*(char *)(iVar8 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x318d)" * (cast_expression "(char *)(iVar8 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x318d)" ( (binary_expression "iVar8 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }" { (expression_statement "uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);" (assignment_expression "uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68)" identifier = (call_expression "FUN_00086af0(param_1,param_4,local_80,&local_68)" identifier (argument_list "(param_1,param_4,local_80,&local_68)" ( identifier , identifier , identifier , (pointer_expression "&local_68" & identifier) )))) ;) (expression_statement "iVar8 = *(int *)pbVar1;" (assignment_expression "iVar8 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar16 = *(int *)(iVar8 + 8);" (assignment_expression "iVar16 = *(int *)(iVar8 + 8)" identifier = (pointer_expression "*(int *)(iVar8 + 8)" * (cast_expression "(int *)(iVar8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 == 0) goto LAB_000888c2;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000888c2;" goto statement_identifier ;)) (labeled_statement "LAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }" statement_identifier : (if_statement "if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }" if (parenthesized_expression "((*(byte *)(iVar8 + 0x14) & 8) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x14) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x14) & 8)" ( (binary_expression "*(byte *)(iVar8 + 0x14) & 8" (pointer_expression "*(byte *)(iVar8 + 0x14)" * (cast_expression "(byte *)(iVar8 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }" { (if_statement "if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }" if (parenthesized_expression "(local_88 == 0)" ( (binary_expression "local_88 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }" { (expression_statement "FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);" (call_expression "FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x1e8)" * (cast_expression "(undefined4 *)(param_1 + 0x1e8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1e8)" ( (binary_expression "param_1 + 0x1e8" identifier + number_literal) )))) , (binary_expression "param_1 + 0x130" identifier + number_literal) ))) ;) }) (else_clause "else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }" else (compound_statement "{\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }" { (expression_statement "FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);" (call_expression "FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x1e8)" * (cast_expression "(undefined4 *)(param_1 + 0x1e8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1e8)" ( (binary_expression "param_1 + 0x1e8" identifier + number_literal) )))) , (binary_expression "param_1 + 0x130" identifier + number_literal) ))) ;) }))) (expression_statement "iVar8 = *(int *)pbVar1;" (assignment_expression "iVar8 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar16 = *(int *)(iVar8 + 8);" (assignment_expression "iVar16 = *(int *)(iVar8 + 8)" identifier = (pointer_expression "*(int *)(iVar8 + 8)" * (cast_expression "(int *)(iVar8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 == 0) goto LAB_000888c2;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000888c2;" goto statement_identifier ;)) }))) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (if_statement "if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;" if (parenthesized_expression "((*(byte *)(iVar8 + 0x14) & 8) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x14) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x14) & 8)" ( (binary_expression "*(byte *)(iVar8 + 0x14) & 8" (pointer_expression "*(byte *)(iVar8 + 0x14)" * (cast_expression "(byte *)(iVar8 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00088970;" goto statement_identifier ;)) (expression_statement "pcVar13 = *(code **)(*param_4 + 0x68);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x68)" identifier = (pointer_expression "*(code **)(*param_4 + 0x68)" * (cast_expression "(code **)(*param_4 + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x68)" ( (binary_expression "*param_4 + 0x68" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;" if (parenthesized_expression "(pcVar13 != (code *)(unaff_EDI + 0x1497))" ( (binary_expression "pcVar13 != (code *)(unaff_EDI + 0x1497)" identifier != (cast_expression "(code *)(unaff_EDI + 0x1497)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1497)" ( (binary_expression "unaff_EDI + 0x1497" identifier + number_literal) )))) )) (goto_statement "goto LAB_000888db;" goto statement_identifier ;)) (if_statement "if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;" if (parenthesized_expression "((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))" ( (binary_expression "(*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147))" (parenthesized_expression "(*(char *)(iVar16 + 0x3209) != '\0')" ( (binary_expression "*(char *)(iVar16 + 0x3209) != '\0'" (pointer_expression "*(char *)(iVar16 + 0x3209)" * (cast_expression "(char *)(iVar16 + 0x3209)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x3209)" ( (binary_expression "iVar16 + 0x3209" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147))" ( (comma_expression "pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x6c)" identifier = (pointer_expression "*(code **)(*param_4 + 0x6c)" * (cast_expression "(code **)(*param_4 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x6c)" ( (binary_expression "*param_4 + 0x6c" (pointer_expression "*param_4" * identifier) + number_literal) ))))) , (binary_expression "pcVar13 != (code *)(unaff_EDI + 0x1147)" identifier != (cast_expression "(code *)(unaff_EDI + 0x1147)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1147)" ( (binary_expression "unaff_EDI + 0x1147" identifier + number_literal) ))))) ))) )) (goto_statement "goto LAB_00088910;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }" else (compound_statement "{\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }" { (expression_statement "uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);" (assignment_expression "uVar19 = FUN_0007c8c0(param_1,local_94,&local_68)" identifier = (call_expression "FUN_0007c8c0(param_1,local_94,&local_68)" identifier (argument_list "(param_1,local_94,&local_68)" ( identifier , identifier , (pointer_expression "&local_68" & identifier) )))) ;) (expression_statement "iVar8 = *(int *)pbVar1;" (assignment_expression "iVar8 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar16 = *(int *)(iVar8 + 8);" (assignment_expression "iVar16 = *(int *)(iVar8 + 8)" identifier = (pointer_expression "*(int *)(iVar8 + 8)" * (cast_expression "(int *)(iVar8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 != 0) goto LAB_00087ff2;" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00087ff2;" goto statement_identifier ;)) (labeled_statement "LAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);" statement_identifier : (expression_statement "pcVar13 = *(code **)(*param_4 + 0x68);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x68)" identifier = (pointer_expression "*(code **)(*param_4 + 0x68)" * (cast_expression "(code **)(*param_4 + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x68)" ( (binary_expression "*param_4 + 0x68" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;)) (if_statement "if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;" if (parenthesized_expression "(pcVar13 == (code *)(unaff_EDI + 0x1497))" ( (binary_expression "pcVar13 == (code *)(unaff_EDI + 0x1497)" identifier == (cast_expression "(code *)(unaff_EDI + 0x1497)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1497)" ( (binary_expression "unaff_EDI + 0x1497" identifier + number_literal) )))) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) (labeled_statement "LAB_000888db:\n      local_5c = uVar19;" statement_identifier : (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;)) (expression_statement "cVar7 = (*pcVar13)(param_4);" (assignment_expression "cVar7 = (*pcVar13)(param_4)" identifier = (call_expression "(*pcVar13)(param_4)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }" { (if_statement "if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }" if (parenthesized_expression "((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0))" ( (binary_expression "(*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)" (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) || (parenthesized_expression "((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)" ( (binary_expression "(*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0" (parenthesized_expression "(*(byte *)(*(int *)pbVar1 + 0x14) & 8)" ( (binary_expression "*(byte *)(*(int *)pbVar1 + 0x14) & 8" (pointer_expression "*(byte *)(*(int *)pbVar1 + 0x14)" * (cast_expression "(byte *)(*(int *)pbVar1 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0x14)" ( (binary_expression "*(int *)pbVar1 + 0x14" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }" { (expression_statement "pcVar13 = *(code **)(*param_4 + 0x6c);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x6c)" identifier = (pointer_expression "*(code **)(*param_4 + 0x6c)" * (cast_expression "(code **)(*param_4 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x6c)" ( (binary_expression "*param_4 + 0x6c" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;" if (parenthesized_expression "(pcVar13 == (code *)(unaff_EDI + 0x1147))" ( (binary_expression "pcVar13 == (code *)(unaff_EDI + 0x1147)" identifier == (cast_expression "(code *)(unaff_EDI + 0x1147)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1147)" ( (binary_expression "unaff_EDI + 0x1147" identifier + number_literal) )))) )) (goto_statement "goto LAB_00088098;" goto statement_identifier ;)) (labeled_statement "LAB_00088910:\n          local_88 = local_88 + 1;" statement_identifier : (expression_statement "local_88 = local_88 + 1;" (assignment_expression "local_88 = local_88 + 1" identifier = (binary_expression "local_88 + 1" identifier + number_literal)) ;)) (expression_statement "cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);" (assignment_expression "cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5)" identifier = (call_expression "(*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_4,local_88,param_2,param_3,param_1,param_5)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) }) (else_clause "else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }" else (compound_statement "{\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }" { (labeled_statement "LAB_00088970:\n          local_88 = local_88 + 1;" statement_identifier : (expression_statement "local_88 = local_88 + 1;" (assignment_expression "local_88 = local_88 + 1" identifier = (binary_expression "local_88 + 1" identifier + number_literal)) ;)) (expression_statement "cVar7 = local_88 < 2;" (assignment_expression "cVar7 = local_88 < 2" identifier = (binary_expression "local_88 < 2" identifier < number_literal)) ;) }))) (expression_statement "local_88 = iVar9 + 1;" (assignment_expression "local_88 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (if_statement "if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }" { (expression_statement "FUN_0007c310(param_1);" (call_expression "FUN_0007c310(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (goto_statement "goto LAB_00087e80;" goto statement_identifier ;) })) })) }))) (labeled_statement "LAB_00088098:\n    local_88 = iVar9 + 1;" statement_identifier : (expression_statement "local_88 = iVar9 + 1;" (assignment_expression "local_88 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;)) (expression_statement "iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);" (assignment_expression "iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0)" identifier = (call_expression "FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0)" identifier (argument_list "(param_3,&UNK_0019b53f + unaff_EDI,0)" ( identifier , (binary_expression "&UNK_0019b53f + unaff_EDI" (pointer_expression "&UNK_0019b53f" & identifier) + identifier) , number_literal )))) ;) (if_statement "if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }" if (parenthesized_expression "((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0))" ( (binary_expression "(iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)" (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(iVar9 + 0x2c) & 4) != 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x2c) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar9 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar9 + 0x2c)" * (cast_expression "(byte *)(iVar9 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x2c)" ( (binary_expression "iVar9 + 0x2c" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }" { (if_statement "if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }" if (parenthesized_expression "(local_80 == 0)" ( (binary_expression "local_80 == 0" identifier == number_literal) )) (compound_statement "{\n        FUN_00122fd0(iVar9);\n      }" { (expression_statement "FUN_00122fd0(iVar9);" (call_expression "FUN_00122fd0(iVar9)" identifier (argument_list "(iVar9)" ( identifier ))) ;) }) (else_clause "else {\n        FUN_00122f70(iVar9,local_80,0);\n      }" else (compound_statement "{\n        FUN_00122f70(iVar9,local_80,0);\n      }" { (expression_statement "FUN_00122f70(iVar9,local_80,0);" (call_expression "FUN_00122f70(iVar9,local_80,0)" identifier (argument_list "(iVar9,local_80,0)" ( identifier , identifier , number_literal ))) ;) }))) })) (expression_statement "uVar19 = FUN_0007cbc0(param_1,local_5c,0);" (assignment_expression "uVar19 = FUN_0007cbc0(param_1,local_5c,0)" identifier = (call_expression "FUN_0007cbc0(param_1,local_5c,0)" identifier (argument_list "(param_1,local_5c,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "piVar12 = *(int **)(param_1 + 0x13c);" (assignment_expression "piVar12 = *(int **)(param_1 + 0x13c)" identifier = (pointer_expression "*(int **)(param_1 + 0x13c)" * (cast_expression "(int **)(param_1 + 0x13c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = local_68;" (assignment_expression "iVar9 = local_68" identifier = identifier) ;) (if_statement "if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }" if (parenthesized_expression "(*(int **)(param_1 + 0x140) != piVar12)" ( (binary_expression "*(int **)(param_1 + 0x140) != piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" * (cast_expression "(int **)(param_1 + 0x140)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }" { (do_statement "do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);" do (compound_statement "{\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      }" { (while_statement "while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }" while (parenthesized_expression "(piVar2 = (int *)*piVar12, piVar2[0x18] == -1)" ( (comma_expression "piVar2 = (int *)*piVar12, piVar2[0x18] == -1" (assignment_expression "piVar2 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) , (binary_expression "piVar2[0x18] == -1" (subscript_expression "piVar2[0x18]" identifier [ number_literal ]) == number_literal)) )) (compound_statement "{\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }" { (if_statement "if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }" if (parenthesized_expression "(*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447))" ( (binary_expression "*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)" (pointer_expression "*(code **)(*piVar2 + 0x30)" * (cast_expression "(code **)(*piVar2 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x30)" ( (binary_expression "*piVar2 + 0x30" (pointer_expression "*piVar2" * identifier) + number_literal) )))) == (cast_expression "(code *)(unaff_EDI + 0x1447)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1447)" ( (binary_expression "unaff_EDI + 0x1447" identifier + number_literal) )))) )) (compound_statement "{\n            piVar2[0x18] = iVar9;\n          }" { (expression_statement "piVar2[0x18] = iVar9;" (assignment_expression "piVar2[0x18] = iVar9" (subscript_expression "piVar2[0x18]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }" else (compound_statement "{\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }" { (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "(**(code **)(*piVar2 + 0x30))(piVar2,iVar9);" (call_expression "(**(code **)(*piVar2 + 0x30))(piVar2,iVar9)" (parenthesized_expression "(**(code **)(*piVar2 + 0x30))" ( (pointer_expression "**(code **)(*piVar2 + 0x30)" * (pointer_expression "*(code **)(*piVar2 + 0x30)" * (cast_expression "(code **)(*piVar2 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x30)" ( (binary_expression "*piVar2 + 0x30" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,iVar9)" ( identifier , identifier ))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) }))) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (if_statement "if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;" if (parenthesized_expression "(*(int **)(param_1 + 0x140) == piVar12)" ( (binary_expression "*(int **)(param_1 + 0x140) == piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" * (cast_expression "(int **)(param_1 + 0x140)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) == identifier) )) (goto_statement "goto LAB_00088157;" goto statement_identifier ;)) })) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(int **)(param_1 + 0x140) != piVar12)" ( (binary_expression "*(int **)(param_1 + 0x140) != piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" * (cast_expression "(int **)(param_1 + 0x140)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) != identifier) )) ;) })) (labeled_statement "LAB_00088157:\n    local_68 = iVar9;" statement_identifier : (expression_statement "local_68 = iVar9;" (assignment_expression "local_68 = iVar9" identifier = identifier) ;)) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);" (call_expression "FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74)" identifier (argument_list "(param_1,param_2,param_3,iVar9,local_b0,local_74)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }" if (parenthesized_expression "(*(char *)(*(int *)pbVar1 + 0x10) != '\0')" ( (binary_expression "*(char *)(*(int *)pbVar1 + 0x10) != '\0'" (pointer_expression "*(char *)(*(int *)pbVar1 + 0x10)" * (cast_expression "(char *)(*(int *)pbVar1 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0x10)" ( (binary_expression "*(int *)pbVar1 + 0x10" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }" { (if_statement "if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }" if (parenthesized_expression "(*(char *)(*(int *)pbVar1 + 0x11) == '\0')" ( (binary_expression "*(char *)(*(int *)pbVar1 + 0x11) == '\0'" (pointer_expression "*(char *)(*(int *)pbVar1 + 0x11)" * (cast_expression "(char *)(*(int *)pbVar1 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0x11)" ( (binary_expression "*(int *)pbVar1 + 0x11" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_0007d770(param_1,param_2);\n      }" { (expression_statement "FUN_0007d770(param_1,param_2);" (call_expression "FUN_0007d770(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;) })) (expression_statement "FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);" (call_expression "FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1)" identifier (argument_list "(*(undefined4 *)(param_1 + 4),param_3,param_1)" ( (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , identifier , identifier ))) ;) (if_statement "if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x1d0) != 0)" ( (binary_expression "*(int *)(param_1 + 0x1d0) != 0" (pointer_expression "*(int *)(param_1 + 0x1d0)" * (cast_expression "(int *)(param_1 + 0x1d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d0)" ( (binary_expression "param_1 + 0x1d0" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }" { (expression_statement "FUN_00066ab0(*(int *)(param_1 + 0x1d0));" (call_expression "FUN_00066ab0(*(int *)(param_1 + 0x1d0))" identifier (argument_list "(*(int *)(param_1 + 0x1d0))" ( (pointer_expression "*(int *)(param_1 + 0x1d0)" * (cast_expression "(int *)(param_1 + 0x1d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d0)" ( (binary_expression "param_1 + 0x1d0" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00080980(param_1,param_3);" (call_expression "FUN_00080980(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) })) (expression_statement "uVar10 = FUN_00081560(param_1);" (assignment_expression "uVar10 = FUN_00081560(param_1)" identifier = (call_expression "FUN_00081560(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar19 = FUN_0007cbc0(param_1,local_5c,0);" (assignment_expression "uVar19 = FUN_0007cbc0(param_1,local_5c,0)" identifier = (call_expression "FUN_0007cbc0(param_1,local_5c,0)" identifier (argument_list "(param_1,local_5c,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "piVar12 = *(int **)(param_1 + 0x13c);" (assignment_expression "piVar12 = *(int **)(param_1 + 0x13c)" identifier = (pointer_expression "*(int **)(param_1 + 0x13c)" * (cast_expression "(int **)(param_1 + 0x13c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = local_68;" (assignment_expression "iVar9 = local_68" identifier = identifier) ;) (if_statement "if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;" if (parenthesized_expression "(piVar12 == *(int **)(param_1 + 0x140))" ( (binary_expression "piVar12 == *(int **)(param_1 + 0x140)" identifier == (pointer_expression "*(int **)(param_1 + 0x140)" * (cast_expression "(int **)(param_1 + 0x140)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) ))))) )) (goto_statement "goto LAB_00088259;" goto statement_identifier ;)) (goto_statement "goto LAB_0008822e;" goto statement_identifier ;) })) (labeled_statement "LAB_00088c31:\n    cVar7 = FUN_0007a5f0();" statement_identifier : (expression_statement "cVar7 = FUN_0007a5f0();" (assignment_expression "cVar7 = FUN_0007a5f0()" identifier = (call_expression "FUN_0007a5f0()" identifier (argument_list "()" ( )))) ;)) (expression_statement "iVar8 = extraout_ECX;" (assignment_expression "iVar8 = extraout_ECX" identifier = identifier) ;) (expression_statement "iVar16 = local_90;" (assignment_expression "iVar16 = local_90" identifier = identifier) ;) (labeled_statement "LAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" statement_identifier : (if_statement "if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" { (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }" statement_identifier : (if_statement "if (local_8c == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }" if (parenthesized_expression "(local_8c == (int *)0x0)" ( (binary_expression "local_8c == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }" { comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f)" identifier (argument_list "(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f)" ( (binary_expression "unaff_EDI + 0x19b1cf" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x19c44f" identifier + number_literal) ))) ;) }))) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (if_statement "if (local_80 == 0) goto LAB_00087f52;" if (parenthesized_expression "(local_80 == 0)" ( (binary_expression "local_80 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00087f52;" goto statement_identifier ;)) (labeled_statement "LAB_0008878f:\n      FUN_000bee40(local_80,local_8c);" statement_identifier : (expression_statement "FUN_000bee40(local_80,local_8c);" (call_expression "FUN_000bee40(local_80,local_8c)" identifier (argument_list "(local_80,local_8c)" ( identifier , identifier ))) ;)) (if_statement "if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }" { (labeled_statement "LAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);" statement_identifier : (expression_statement "FUN_000bee40(iVar16,local_8c);" (call_expression "FUN_000bee40(iVar16,local_8c)" identifier (argument_list "(iVar16,local_8c)" ( identifier , identifier ))) ;)) (if_statement "if (local_80 == 0) goto LAB_00087f7a;" if (parenthesized_expression "(local_80 == 0)" ( (binary_expression "local_80 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00087f7a;" goto statement_identifier ;)) })) (labeled_statement "LAB_000887ba:\n      FUN_000bee40(local_80,local_94);" statement_identifier : (expression_statement "FUN_000bee40(local_80,local_94);" (call_expression "FUN_000bee40(local_80,local_94)" identifier (argument_list "(local_80,local_94)" ( identifier , identifier ))) ;)) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) }) (else_clause "else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" else (compound_statement "{\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" { (labeled_statement "LAB_00087f7a:\n      local_80 = 0;" statement_identifier : (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;)) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) })))) (expression_statement "iVar9 = *(int *)(param_1 + 4);" (assignment_expression "iVar9 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (if_statement "if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;" if (parenthesized_expression "(*(char *)(iVar9 + 0xac) == '\0')" ( (binary_expression "*(char *)(iVar9 + 0xac) == '\0'" (pointer_expression "*(char *)(iVar9 + 0xac)" * (cast_expression "(char *)(iVar9 + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xac)" ( (binary_expression "iVar9 + 0xac" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00088468;" goto statement_identifier ;)) (labeled_statement "LAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;" statement_identifier : (if_statement "if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;" if (parenthesized_expression "(*(int *)(iVar9 + 0xbc) == 0)" ( (binary_expression "*(int *)(iVar9 + 0xbc) == 0" (pointer_expression "*(int *)(iVar9 + 0xbc)" * (cast_expression "(int *)(iVar9 + 0xbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xbc)" ( (binary_expression "iVar9 + 0xbc" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00088468;" goto statement_identifier ;))) (if_statement "if (iVar8 != 0) goto code_r0x00087faf;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto code_r0x00087faf;" goto statement_identifier ;)) })) (goto_statement "goto LAB_00088477;" goto statement_identifier ;) (labeled_statement "LAB_0008822e:\n  piVar2 = (int *)*piVar12;" statement_identifier : (expression_statement "piVar2 = (int *)*piVar12;" (assignment_expression "piVar2 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ;)) (if_statement "if (piVar2[0x18] == -1) {\n    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }\n    iVar9 = iVar9 + 1;\n    piVar12 = piVar12 + 1;\n    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;\n    goto LAB_0008822e;\n  }" if (parenthesized_expression "(piVar2[0x18] == -1)" ( (binary_expression "piVar2[0x18] == -1" (subscript_expression "piVar2[0x18]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }\n    iVar9 = iVar9 + 1;\n    piVar12 = piVar12 + 1;\n    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;\n    goto LAB_0008822e;\n  }" { (if_statement "if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }" if (parenthesized_expression "(*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447))" ( (binary_expression "*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)" (pointer_expression "*(code **)(*piVar2 + 0x30)" * (cast_expression "(code **)(*piVar2 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x30)" ( (binary_expression "*piVar2 + 0x30" (pointer_expression "*piVar2" * identifier) + number_literal) )))) == (cast_expression "(code *)(unaff_EDI + 0x1447)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1447)" ( (binary_expression "unaff_EDI + 0x1447" identifier + number_literal) )))) )) (compound_statement "{\n      piVar2[0x18] = iVar9;\n    }" { (expression_statement "piVar2[0x18] = iVar9;" (assignment_expression "piVar2[0x18] = iVar9" (subscript_expression "piVar2[0x18]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }" else (compound_statement "{\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }" { (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "(**(code **)(*piVar2 + 0x30))(piVar2,iVar9);" (call_expression "(**(code **)(*piVar2 + 0x30))(piVar2,iVar9)" (parenthesized_expression "(**(code **)(*piVar2 + 0x30))" ( (pointer_expression "**(code **)(*piVar2 + 0x30)" * (pointer_expression "*(code **)(*piVar2 + 0x30)" * (cast_expression "(code **)(*piVar2 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x30)" ( (binary_expression "*piVar2 + 0x30" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,iVar9)" ( identifier , identifier ))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) }))) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (if_statement "if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;" if (parenthesized_expression "(*(int **)(param_1 + 0x140) == piVar12)" ( (binary_expression "*(int **)(param_1 + 0x140) == piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" * (cast_expression "(int **)(param_1 + 0x140)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) == identifier) )) (goto_statement "goto LAB_00088259;" goto statement_identifier ;)) (goto_statement "goto LAB_0008822e;" goto statement_identifier ;) })) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (if_statement "if (*(int **)(param_1 + 0x140) == piVar12) {\nLAB_00088259:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_0007d3e0(param_1,uVar10,local_b0);\n    uVar19 = local_5c;\n    if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }\n    local_5c = uVar19;\n    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined8 *)(param_1 + 0x1bc) = local_5c;\n    return;\n  }" if (parenthesized_expression "(*(int **)(param_1 + 0x140) == piVar12)" ( (binary_expression "*(int **)(param_1 + 0x140) == piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" * (cast_expression "(int **)(param_1 + 0x140)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) == identifier) )) (compound_statement "{\nLAB_00088259:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_0007d3e0(param_1,uVar10,local_b0);\n    uVar19 = local_5c;\n    if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }\n    local_5c = uVar19;\n    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined8 *)(param_1 + 0x1bc) = local_5c;\n    return;\n  }" { (labeled_statement "LAB_00088259:\n    local_68 = iVar9;" statement_identifier : (expression_statement "local_68 = iVar9;" (assignment_expression "local_68 = iVar9" identifier = identifier) ;)) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "FUN_0007d3e0(param_1,uVar10,local_b0);" (call_expression "FUN_0007d3e0(param_1,uVar10,local_b0)" identifier (argument_list "(param_1,uVar10,local_b0)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (if_statement "if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }" if (parenthesized_expression "(*(char *)(param_1 + 0x1ca) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x1ca) == '\0'" (pointer_expression "*(char *)(param_1 + 0x1ca)" * (cast_expression "(char *)(param_1 + 0x1ca)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ca)" ( (binary_expression "param_1 + 0x1ca" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }" { (expression_statement "uVar19 = FUN_0007cbc0(param_1,local_5c,1);" (assignment_expression "uVar19 = FUN_0007cbc0(param_1,local_5c,1)" identifier = (call_expression "FUN_0007cbc0(param_1,local_5c,1)" identifier (argument_list "(param_1,local_5c,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "uVar19 = FUN_0007cbc0(param_1,uVar19,2);" (assignment_expression "uVar19 = FUN_0007cbc0(param_1,uVar19,2)" identifier = (call_expression "FUN_0007cbc0(param_1,uVar19,2)" identifier (argument_list "(param_1,uVar19,2)" ( identifier , identifier , number_literal )))) ;) })) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);" (call_expression "FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10)" identifier (argument_list "(local_94,*(undefined4 *)(param_1 + 0x160),uVar10)" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x160)" * (cast_expression "(undefined4 *)(param_1 + 0x160)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x160)" ( (binary_expression "param_1 + 0x160" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;" (assignment_expression "BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1" (subscript_expression "BYTE_ARRAY_002804b9[unaff_EDI + 0x10]" identifier [ (binary_expression "unaff_EDI + 0x10" identifier + number_literal) ]) = number_literal) ;) (expression_statement "*(undefined8 *)(param_1 + 0x1bc) = local_5c;" (assignment_expression "*(undefined8 *)(param_1 + 0x1bc) = local_5c" (pointer_expression "*(undefined8 *)(param_1 + 0x1bc)" * (cast_expression "(undefined8 *)(param_1 + 0x1bc)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1bc)" ( (binary_expression "param_1 + 0x1bc" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (goto_statement "goto LAB_0008822e;" goto statement_identifier ;) (labeled_statement "code_r0x00087faf:\n  if (*(char *)(iVar8 + 0x318d) == '\0') {\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }" statement_identifier : (if_statement "if (*(char *)(iVar8 + 0x318d) == '\0') {\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }" if (parenthesized_expression "(*(char *)(iVar8 + 0x318d) == '\0')" ( (binary_expression "*(char *)(iVar8 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x318d)" * (cast_expression "(char *)(iVar8 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x318d)" ( (binary_expression "iVar8 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }" { (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "FUN_00109060(iVar9 + 0xac,local_94,local_8c);" (call_expression "FUN_00109060(iVar9 + 0xac,local_94,local_8c)" identifier (argument_list "(iVar9 + 0xac,local_94,local_8c)" ( (binary_expression "iVar9 + 0xac" identifier + number_literal) , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (labeled_statement "LAB_00088468:\n    local_68 = 1;" statement_identifier : (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" identifier = number_literal) ;)) (if_statement "if (iVar8 == 0) goto LAB_00088477;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_00087fc3;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: off_t finalize(Layout * this, Input_objects * input_objects,\n   Symbol_table * symtab, Target * target, Task * task) */\n\noff_t __thiscall\ngold::Layout::finalize\n          (Layout *this,Input_objects *input_objects,Symbol_table *symtab,Target *target,Task *task)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  _func_int_varargs *p_Var3;\n  Output_section *pOVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  char cVar9;\n  General_options *this_00;\n  Object_format OVar10;\n  Output_segment *this_01;\n  Symbol *this_02;\n  Output_section *pOVar11;\n  Script_options *pSVar12;\n  uint uVar13;\n  Output_data *od;\n  code *pcVar14;\n  int extraout_ECX;\n  int iVar15;\n  uint uVar16;\n  Output_segment *pOVar17;\n  int iVar18;\n  pointer ppOVar19;\n  uint uVar20;\n  uint uVar21;\n  uint uVar22;\n  int iVar23;\n  int unaff_EDI;\n  off_t oVar24;\n  longlong lVar25;\n  Symbol_table *__in_chrg;\n  Parameters *in_stack_ffffff34;\n  Parameters *in_stack_ffffff38;\n  Output_data **local_b0;\n  int local_a4;\n  int local_a0;\n  undefined8 local_9c;\n  Output_file_header *local_94;\n  Output_segment *local_90;\n  Output_segment_headers *local_8c;\n  int local_88;\n  Output_segment *local_80;\n  uint local_dynamic_count;\n  uint forced_local_dynamic_count;\n  Output_section *dynstr;\n  uint shndx;\n  pointer local_64;\n  pointer local_60;\n  off_t off;\n  \n  __x86_get_pc_thunk_di();\n  local_dynamic_count = 0;\n  forced_local_dynamic_count = 0;\n  if (*(code **)(*(int *)target + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*(int *)target + 0x10))(target,this,input_objects,symtab);\n  }\n  count_local_symbols(this,task,input_objects);\n  link_stabs_sections(this);\n  pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;\n  iVar23 = *(int *)pbVar1;\n  if (*(int *)(iVar23 + 8) == 0) goto LAB_00088477;\n  if (*(char *)(*(int *)(iVar23 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar23 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar23 + 0x11) == '\0') {\n      pSVar12 = this->script_options_;\n      if (((pSVar12->script_sections_).saw_sections_clause_ == false) ||\n         (local_90 = (Output_segment *)0x0,\n         (pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)) {\n        local_90 = make_output_segment(this,6,4);\n        pSVar12 = this->script_options_;\n      }\n      shndx = 0;\n      local_64 = (pointer)0x0;\n      local_60 = (pointer)0x0;\n                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */\n      Versions::Versions((Versions *)&off,&pSVar12->version_script_info_,&this->dynpool_);\n                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */\n      create_dynamic_symtab\n                (this,input_objects,symtab,&dynstr,&local_dynamic_count,&forced_local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,(Versions *)&off);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar23 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n      }\n      if (((*(char *)(iVar23 + 0x1a25) == '\0') || (*(int *)(iVar23 + 0x1f64) != 0)) &&\n         (this->interp_segment_ == (Output_segment *)0x0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        create_interp(this,target);\n      }\n      finish_dynamic_section(this,input_objects,symtab);\n      Stringpool_template<char>::set_string_offsets(&this->dynpool_);\n      create_version_sections\n                (this,(Versions *)&off,symtab,forced_local_dynamic_count + local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,dynstr);\n      __in_chrg = symtab;\n      set_dynamic_symbol_size(this,symtab);\n      Versions::~Versions((Versions *)&off,(int)__in_chrg);\n      if (shndx != 0) {\n        operator_delete((void *)shndx);\n      }\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (Output_segment_headers *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = (Output_segment *)0x0;\n    }\n    local_8c = (Output_segment_headers *)operator_new(0x24);\n                    /* try { // try from 00088b86 to 00088b8a has its CatchHandler @ 00088ca5 */\n    Output_segment_headers::Output_segment_headers(local_8c,&this->segment_list_);\n  }\n  else {\n    local_90 = (Output_segment *)0x0;\n    local_8c = (Output_segment_headers *)0x0;\n  }\nLAB_00087db2:\n  local_94 = (Output_file_header *)operator_new(0x34);\n                    /* try { // try from 00087dda to 00087dde has its CatchHandler @ 00088cac */\n  Output_file_header::Output_file_header(local_94,target,symtab,local_8c);\n  off = CONCAT44(off._4_4_,local_94);\n  local_b0 = (Output_data **)&off;\n  std::vector<gold::Output_data*,_std::allocator<gold::Output_data*>_>::\n  emplace_back<gold::Output_data*>(&this->special_output_list_,local_b0);\n  if (local_8c != (Output_segment_headers *)0x0) {\n    off = CONCAT44(off._4_4_,local_8c);\n    std::vector<gold::Output_data*,_std::allocator<gold::Output_data*>_>::\n    emplace_back<gold::Output_data*>(&this->special_output_list_,local_b0);\n  }\n  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    iVar23 = *(int *)pbVar1;\n    iVar15 = *(int *)(iVar23 + 8);\n    if (iVar15 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    pcVar14 = *(code **)(*(int *)target + 0x68);\n    if (pcVar14 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n    }\nLAB_00088af4:\n    cVar9 = (*pcVar14)(target);\nLAB_00087e60:\n    if (cVar9 == '\0') goto LAB_00087e72;\n  }\n  else {\n    place_orphan_sections_in_script(this);\n    iVar23 = *(int *)pbVar1;\n    iVar15 = *(int *)(iVar23 + 8);\n    if (iVar15 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar23 + 0x14) & 8) == 0) {\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar9 = *(char *)(iVar15 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }\n  prepare_for_relaxation(this);\nLAB_00087e72:\n  local_88 = 0;\nLAB_00087e80:\n  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    this_00 = *(General_options **)(*(int *)pbVar1 + 8);\n    if (this_00 == (General_options *)0x0) goto LAB_00088477;\n    local_80 = (Output_segment *)0x0;\n    if ((this_00->relocatable_).value == false) {\n      local_80 = find_first_load_seg(this,target);\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = set_section_addresses_from_script(this,symtab);\nLAB_00088944:\n    this_00 = *(General_options **)(*(int *)pbVar1 + 8);\n    if (this_00 == (General_options *)0x0) goto LAB_00088477;\n  }\n  OVar10 = General_options::oformat_enum(this_00);\n  this_01 = (Output_segment *)0x0;\n  if (OVar10 == OBJECT_FORMAT_ELF) {\n    this_01 = local_80;\n  }\n  iVar23 = *(int *)(*(int *)pbVar1 + 8);\n  if (iVar23 != 0) {\n    iVar15 = *(int *)(target + 4);\n    if (*(char *)(iVar15 + 0x30) == '\0') {\n      if (*(char *)(iVar23 + 0x41b8) != '\0') {\n        local_9c = *(undefined8 *)(iVar23 + 0x5218);\n        if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n          local_9c = *(undefined8 *)(iVar15 + 0x20);\n        }\n        lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x41bc),*(undefined4 *)(iVar23 + 0x41c0),\n                           (int)local_9c,local_9c._4_4_);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar23 + 0x423c) != '\0') {\n      local_9c = *(undefined8 *)(iVar23 + 0x5218);\n      if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n        local_9c = *(undefined8 *)(iVar15 + 0x20);\n      }\n      lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x4240),*(undefined4 *)(iVar23 + 0x4244),\n                         (int)local_9c,local_9c._4_4_);\njoined_r0x0008887a:\n      if (lVar25 != 0) {\n        cVar9 = *(char *)(iVar23 + 0x318d);\n        pOVar17 = (Output_segment *)0x0;\n        goto LAB_00087f2e;\n      }\n    }\n    pOVar17 = local_90;\n    if ((local_90 != (Output_segment *)0x0) && (this_01 == (Output_segment *)0x0)) {\n      if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xaef,(char *)(unaff_EDI + 0x19c44f));\n      }\n      cVar9 = *(char *)(iVar23 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar9 = *(char *)(iVar23 + 0x318d);\n    if (this_01 == (Output_segment *)0x0) goto LAB_00087f2e;\n    local_80 = this_01;\n    if (((this_01->field_0x19c & 2) == 0) ||\n       ((this->script_options_->script_sections_).saw_sections_clause_ != false)) {\n      if (cVar9 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar9 != '\0') goto LAB_000887ba;\n    if ((((local_94->super_Output_data).field_0x1c & 2) == 0) &&\n       ((*(local_94->super_Output_data)._vptr_Output_data[0xe])(local_94),\n       ((local_94->super_Output_data).field_0x1c & 2) == 0)) {\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0x163,(char *)(unaff_EDI + 0x19c43b));\n    }\n    if (((local_8c->super_Output_data).field_0x1c & 2) == 0) {\n      (*(local_8c->super_Output_data)._vptr_Output_data[0xe])(local_8c);\n      if (((local_8c->super_Output_data).field_0x1c & 2) == 0) goto LAB_00088c5f;\n      if (((local_94->super_Output_data).field_0x1c & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0xcf,(char *)(unaff_EDI + 0x19c68f));\n      }\n    }\n    uVar22 = (int)(local_94->super_Output_data).data_size_ +\n             (int)(local_8c->super_Output_data).data_size_;\n    iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar23 == 0) {\n                    /* WARNING: Subroutine does not return */\n      Target::abi_pagesize((Target *)in_stack_ffffff34);\n    }\n    local_a0 = *(int *)(iVar23 + 0x521c);\n    local_a4 = *(int *)(iVar23 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(*(int *)(target + 4) + 0x24);\n      local_a4 = *(int *)(*(int *)(target + 4) + 0x20);\n    }\n    uVar5 = (uint)this_01->paddr_;\n    uVar6 = *(uint *)((int)&this_01->paddr_ + 4);\n    uVar20 = uVar5 - uVar22 & -local_a4;\n    uVar21 = uVar6 - (uVar5 < uVar22) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar13 = uVar5 - uVar20;\n    uVar16 = (uVar6 - uVar21) - (uint)(uVar5 < uVar20);\n    cVar9 = *(char *)(iVar23 + 0x318d);\n    if (uVar16 <= uVar6 && (uint)(uVar5 < uVar13) <= uVar6 - uVar16) {\n      uVar7 = *(uint *)((int)&this_01->vaddr_ + 4);\n      uVar8 = (uint)this_01->vaddr_;\n      if (uVar16 <= uVar7 && (uint)(uVar8 < uVar13) <= uVar7 - uVar16) {\n        *(uint *)&this_01->paddr_ = uVar20;\n        *(uint *)&this_01->vaddr_ = (uVar8 - uVar5) + uVar20;\n        *(uint *)((int)&this_01->vaddr_ + 4) =\n             ((uVar7 - uVar6) - (uint)(uVar8 < uVar5)) + uVar21 + (uint)CARRY4(uVar8 - uVar5,uVar20)\n        ;\n        this_01->field_0x19c = this_01->field_0x19c | 2;\n        *(uint *)((int)&this_01->paddr_ + 4) = uVar21;\n        iVar23 = uVar16 - (uVar13 < uVar22);\n        if (cVar9 != '\0') goto LAB_000887ba;\n        if (uVar13 - uVar22 == 0 && iVar23 == 0) goto LAB_0008878f;\n        if (this_01 == (Output_segment *)0x0) goto LAB_0008878f;\n        od = (Output_data *)operator_new(0x2c);\n        *(undefined4 *)&od->address_ = 0;\n        *(uint *)&od->data_size_ = uVar13 - uVar22;\n        bVar2 = od->field_0x1c;\n        *(undefined4 *)((int)&od->address_ + 4) = 0;\n        od[1]._vptr_Output_data = (_func_int_varargs **)0x0;\n        *(undefined4 *)&od[1].address_ = 1;\n        od->field_0x1c = bVar2 & 0xe0 | 10;\n        *(undefined4 *)((int)&od[1].address_ + 4) = 0;\n        *(int *)((int)&od->data_size_ + 4) = iVar23;\n        *(undefined4 *)&od->offset_ = 0xffffffff;\n        *(undefined4 *)((int)&od->offset_ + 4) = 0xffffffff;\n        od->_vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2759db);\n        Output_segment::add_initial_output_data(this_01,od);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar9 != '\0') goto LAB_00087f7a;\n    local_80 = (Output_segment *)0x0;\nLAB_00087f52:\n    if (pOVar17 != (Output_segment *)0x0) goto LAB_00087f5a;\n    pSVar12 = this->script_options_;\n    if ((pSVar12->script_sections_).saw_sections_clause_ != false) goto LAB_00087f99;\nLAB_00087fc3:\n    iVar15 = local_88;\n    shndx = 1;\n    if (*(char *)(iVar23 + 0x318d) == '\0') {\n      oVar24 = set_segment_offsets(this,target,local_80,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          Relaxation_debug_check::read_sections(this->relaxation_debug_check_,&this->section_list_);\n        }\n        else {\n          Relaxation_debug_check::verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);\n        }\n        iVar23 = *(int *)pbVar1;\n        iVar18 = *(int *)(iVar23 + 8);\n        if (iVar18 == 0) goto LAB_000888c2;\n      }\n      off = oVar24;\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar18 + 0x3209) != '\0') &&\n         (pcVar14 = *(code **)(*(int *)target + 0x6c), pcVar14 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      oVar24 = set_relocatable_section_offsets(this,&local_94->super_Output_data,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      off = oVar24;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      cVar9 = (*pcVar14)(target);\n      if (cVar9 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar14 = *(code **)(*(int *)target + 0x6c);\n          if (pcVar14 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar9 = local_88 < 2;\n        }\n        local_88 = iVar15 + 1;\n        if (cVar9 != '\0') {\n          clean_up_after_relaxation(this);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar15 + 1;\n    this_02 = Symbol_table::lookup(symtab,(char *)(unaff_EDI + 0x19b53f),(char *)0x0);\n    if ((this_02 != (Symbol *)0x0) && ((this_02->field_0x2c & 4) != 0)) {\n      if (local_80 == (Output_segment *)0x0) {\n        Symbol::set_undefined(this_02);\n      }\n      else {\n        Symbol::set_output_segment(this_02,local_80,SEGMENT_START);\n      }\n    }\n    off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);\n    ppOVar19 = (this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_start;\n    uVar22 = shndx;\n    if ((this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish != ppOVar19) {\n      do {\n        while (pOVar11 = *ppOVar19, pOVar11->out_shndx_ == 0xffffffff) {\n          p_Var3 = (pOVar11->super_Output_data)._vptr_Output_data[0xc];\n          if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n            pOVar11->out_shndx_ = uVar22;\n          }\n          else {\n            (*p_Var3)(pOVar11,uVar22);\n          }\n          uVar22 = uVar22 + 1;\n          ppOVar19 = ppOVar19 + 1;\n          if ((this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish == ppOVar19) goto LAB_00088157;\n        }\n        ppOVar19 = ppOVar19 + 1;\n      } while ((this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish != ppOVar19);\n    }\nLAB_00088157:\n    shndx = uVar22;\n    create_symtab_sections(this,input_objects,symtab,uVar22,(off_t *)local_b0,local_dynamic_count);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        assign_local_dynsym_offsets(this,input_objects);\n      }\n      Script_options::finalize_symbols(this->script_options_,symtab,this);\n      if (this->incremental_inputs_ != (Incremental_inputs *)0x0) {\n        Incremental_inputs::finalize(this->incremental_inputs_);\n        create_incremental_info_sections(this,symtab);\n      }\n      pOVar11 = create_shstrtab(this);\n      off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);\n      ppOVar19 = (this->unattached_section_list_).\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                 _M_impl._M_start;\n      uVar22 = shndx;\n      if (ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar9 = Parameters::doing_static_link(in_stack_ffffff34,in_stack_ffffff38);\n    iVar23 = extraout_ECX;\n    pOVar17 = local_90;\nLAB_00087f2e:\n    if (cVar9 == '\0') {\n      local_80 = (Output_segment *)0x0;\nLAB_00087f39:\n      if (local_8c == (Output_segment_headers *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f));\n      }\n      if (local_80 == (Output_segment *)0x0) goto LAB_00087f52;\nLAB_0008878f:\n      Output_segment::add_initial_output_data(local_80,&local_8c->super_Output_data);\n      if (pOVar17 != (Output_segment *)0x0) {\nLAB_00087f5a:\n        Output_segment::add_initial_output_data(pOVar17,&local_8c->super_Output_data);\n        if (local_80 == (Output_segment *)0x0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      Output_segment::add_initial_output_data(local_80,&local_94->super_Output_data);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = (Output_segment *)0x0;\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    pSVar12 = this->script_options_;\n    if ((pSVar12->script_sections_).saw_sections_clause_ == false) goto LAB_00088468;\nLAB_00087f99:\n    if ((pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0) goto LAB_00088468;\n    if (iVar23 != 0) goto code_r0x00087faf;\n  }\n  goto LAB_00088477;\nLAB_0008822e:\n  pOVar4 = *ppOVar19;\n  if (pOVar4->out_shndx_ == 0xffffffff) {\n    p_Var3 = (pOVar4->super_Output_data)._vptr_Output_data[0xc];\n    if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n      pOVar4->out_shndx_ = uVar22;\n    }\n    else {\n      (*p_Var3)(pOVar4,uVar22);\n    }\n    uVar22 = uVar22 + 1;\n    ppOVar19 = ppOVar19 + 1;\n    if ((this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == ppOVar19) goto LAB_00088259;\n    goto LAB_0008822e;\n  }\n  ppOVar19 = ppOVar19 + 1;\n  if ((this->unattached_section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish == ppOVar19) {\nLAB_00088259:\n    shndx = uVar22;\n    create_shdrs(this,pOVar11,(off_t *)local_b0);\n    if (this->any_postprocessing_sections_ == false) {\n      off = set_section_offsets(this,off,POSTPROCESSING_SECTIONS_PASS);\n      off = set_section_offsets(this,off,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);\n    }\n    Output_file_header::set_section_info(local_94,this->section_headers_,pOVar11);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined4 *)((int)&this->output_file_size_ + 4) = off._4_4_;\n    *(undefined4 *)&this->output_file_size_ = (undefined4)off;\n    return off;\n  }\n  goto LAB_0008822e;\ncode_r0x00087faf:\n  if (*(char *)(iVar23 + 0x318d) == '\0') {\n    Script_sections::put_headers_in_phdrs\n              (&pSVar12->script_sections_,&local_94->super_Output_data,&local_8c->super_Output_data)\n    ;\n    iVar23 = *(int *)(*(int *)pbVar1 + 8);\nLAB_00088468:\n    shndx = 1;\n    if (iVar23 == 0) goto LAB_00088477;\n  }\n  goto LAB_00087fc3;\n}\n\n" comment comment (function_definition "off_t __thiscall\ngold::Layout::finalize\n          (Layout *this,Input_objects *input_objects,Symbol_table *symtab,Target *target,Task *task)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  _func_int_varargs *p_Var3;\n  Output_section *pOVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  char cVar9;\n  General_options *this_00;\n  Object_format OVar10;\n  Output_segment *this_01;\n  Symbol *this_02;\n  Output_section *pOVar11;\n  Script_options *pSVar12;\n  uint uVar13;\n  Output_data *od;\n  code *pcVar14;\n  int extraout_ECX;\n  int iVar15;\n  uint uVar16;\n  Output_segment *pOVar17;\n  int iVar18;\n  pointer ppOVar19;\n  uint uVar20;\n  uint uVar21;\n  uint uVar22;\n  int iVar23;\n  int unaff_EDI;\n  off_t oVar24;\n  longlong lVar25;\n  Symbol_table *__in_chrg;\n  Parameters *in_stack_ffffff34;\n  Parameters *in_stack_ffffff38;\n  Output_data **local_b0;\n  int local_a4;\n  int local_a0;\n  undefined8 local_9c;\n  Output_file_header *local_94;\n  Output_segment *local_90;\n  Output_segment_headers *local_8c;\n  int local_88;\n  Output_segment *local_80;\n  uint local_dynamic_count;\n  uint forced_local_dynamic_count;\n  Output_section *dynstr;\n  uint shndx;\n  pointer local_64;\n  pointer local_60;\n  off_t off;\n  \n  __x86_get_pc_thunk_di();\n  local_dynamic_count = 0;\n  forced_local_dynamic_count = 0;\n  if (*(code **)(*(int *)target + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*(int *)target + 0x10))(target,this,input_objects,symtab);\n  }\n  count_local_symbols(this,task,input_objects);\n  link_stabs_sections(this);\n  pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;\n  iVar23 = *(int *)pbVar1;\n  if (*(int *)(iVar23 + 8) == 0) goto LAB_00088477;\n  if (*(char *)(*(int *)(iVar23 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar23 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar23 + 0x11) == '\0') {\n      pSVar12 = this->script_options_;\n      if (((pSVar12->script_sections_).saw_sections_clause_ == false) ||\n         (local_90 = (Output_segment *)0x0,\n         (pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)) {\n        local_90 = make_output_segment(this,6,4);\n        pSVar12 = this->script_options_;\n      }\n      shndx = 0;\n      local_64 = (pointer)0x0;\n      local_60 = (pointer)0x0;\n                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */\n      Versions::Versions((Versions *)&off,&pSVar12->version_script_info_,&this->dynpool_);\n                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */\n      create_dynamic_symtab\n                (this,input_objects,symtab,&dynstr,&local_dynamic_count,&forced_local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,(Versions *)&off);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar23 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n      }\n      if (((*(char *)(iVar23 + 0x1a25) == '\0') || (*(int *)(iVar23 + 0x1f64) != 0)) &&\n         (this->interp_segment_ == (Output_segment *)0x0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        create_interp(this,target);\n      }\n      finish_dynamic_section(this,input_objects,symtab);\n      Stringpool_template<char>::set_string_offsets(&this->dynpool_);\n      create_version_sections\n                (this,(Versions *)&off,symtab,forced_local_dynamic_count + local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,dynstr);\n      __in_chrg = symtab;\n      set_dynamic_symbol_size(this,symtab);\n      Versions::~Versions((Versions *)&off,(int)__in_chrg);\n      if (shndx != 0) {\n        operator_delete((void *)shndx);\n      }\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (Output_segment_headers *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = (Output_segment *)0x0;\n    }\n    local_8c = (Output_segment_headers *)operator_new(0x24);\n                    /* try { // try from 00088b86 to 00088b8a has its CatchHandler @ 00088ca5 */\n    Output_segment_headers::Output_segment_headers(local_8c,&this->segment_list_);\n  }\n  else {\n    local_90 = (Output_segment *)0x0;\n    local_8c = (Output_segment_headers *)0x0;\n  }\nLAB_00087db2:\n  local_94 = (Output_file_header *)operator_new(0x34);\n                    /* try { // try from 00087dda to 00087dde has its CatchHandler @ 00088cac */\n  Output_file_header::Output_file_header(local_94,target,symtab,local_8c);\n  off = CONCAT44(off._4_4_,local_94);\n  local_b0 = (Output_data **)&off;\n  std::vector<gold::Output_data*,_std::allocator<gold::Output_data*>_>::\n  emplace_back<gold::Output_data*>(&this->special_output_list_,local_b0);\n  if (local_8c != (Output_segment_headers *)0x0) {\n    off = CONCAT44(off._4_4_,local_8c);\n    std::vector<gold::Output_data*,_std::allocator<gold::Output_data*>_>::\n    emplace_back<gold::Output_data*>(&this->special_output_list_,local_b0);\n  }\n  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    iVar23 = *(int *)pbVar1;\n    iVar15 = *(int *)(iVar23 + 8);\n    if (iVar15 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    pcVar14 = *(code **)(*(int *)target + 0x68);\n    if (pcVar14 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n    }\nLAB_00088af4:\n    cVar9 = (*pcVar14)(target);\nLAB_00087e60:\n    if (cVar9 == '\0') goto LAB_00087e72;\n  }\n  else {\n    place_orphan_sections_in_script(this);\n    iVar23 = *(int *)pbVar1;\n    iVar15 = *(int *)(iVar23 + 8);\n    if (iVar15 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar23 + 0x14) & 8) == 0) {\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar9 = *(char *)(iVar15 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }\n  prepare_for_relaxation(this);\nLAB_00087e72:\n  local_88 = 0;\nLAB_00087e80:\n  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    this_00 = *(General_options **)(*(int *)pbVar1 + 8);\n    if (this_00 == (General_options *)0x0) goto LAB_00088477;\n    local_80 = (Output_segment *)0x0;\n    if ((this_00->relocatable_).value == false) {\n      local_80 = find_first_load_seg(this,target);\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = set_section_addresses_from_script(this,symtab);\nLAB_00088944:\n    this_00 = *(General_options **)(*(int *)pbVar1 + 8);\n    if (this_00 == (General_options *)0x0) goto LAB_00088477;\n  }\n  OVar10 = General_options::oformat_enum(this_00);\n  this_01 = (Output_segment *)0x0;\n  if (OVar10 == OBJECT_FORMAT_ELF) {\n    this_01 = local_80;\n  }\n  iVar23 = *(int *)(*(int *)pbVar1 + 8);\n  if (iVar23 != 0) {\n    iVar15 = *(int *)(target + 4);\n    if (*(char *)(iVar15 + 0x30) == '\0') {\n      if (*(char *)(iVar23 + 0x41b8) != '\0') {\n        local_9c = *(undefined8 *)(iVar23 + 0x5218);\n        if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n          local_9c = *(undefined8 *)(iVar15 + 0x20);\n        }\n        lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x41bc),*(undefined4 *)(iVar23 + 0x41c0),\n                           (int)local_9c,local_9c._4_4_);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar23 + 0x423c) != '\0') {\n      local_9c = *(undefined8 *)(iVar23 + 0x5218);\n      if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n        local_9c = *(undefined8 *)(iVar15 + 0x20);\n      }\n      lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x4240),*(undefined4 *)(iVar23 + 0x4244),\n                         (int)local_9c,local_9c._4_4_);\njoined_r0x0008887a:\n      if (lVar25 != 0) {\n        cVar9 = *(char *)(iVar23 + 0x318d);\n        pOVar17 = (Output_segment *)0x0;\n        goto LAB_00087f2e;\n      }\n    }\n    pOVar17 = local_90;\n    if ((local_90 != (Output_segment *)0x0) && (this_01 == (Output_segment *)0x0)) {\n      if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xaef,(char *)(unaff_EDI + 0x19c44f));\n      }\n      cVar9 = *(char *)(iVar23 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar9 = *(char *)(iVar23 + 0x318d);\n    if (this_01 == (Output_segment *)0x0) goto LAB_00087f2e;\n    local_80 = this_01;\n    if (((this_01->field_0x19c & 2) == 0) ||\n       ((this->script_options_->script_sections_).saw_sections_clause_ != false)) {\n      if (cVar9 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar9 != '\0') goto LAB_000887ba;\n    if ((((local_94->super_Output_data).field_0x1c & 2) == 0) &&\n       ((*(local_94->super_Output_data)._vptr_Output_data[0xe])(local_94),\n       ((local_94->super_Output_data).field_0x1c & 2) == 0)) {\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0x163,(char *)(unaff_EDI + 0x19c43b));\n    }\n    if (((local_8c->super_Output_data).field_0x1c & 2) == 0) {\n      (*(local_8c->super_Output_data)._vptr_Output_data[0xe])(local_8c);\n      if (((local_8c->super_Output_data).field_0x1c & 2) == 0) goto LAB_00088c5f;\n      if (((local_94->super_Output_data).field_0x1c & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0xcf,(char *)(unaff_EDI + 0x19c68f));\n      }\n    }\n    uVar22 = (int)(local_94->super_Output_data).data_size_ +\n             (int)(local_8c->super_Output_data).data_size_;\n    iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar23 == 0) {\n                    /* WARNING: Subroutine does not return */\n      Target::abi_pagesize((Target *)in_stack_ffffff34);\n    }\n    local_a0 = *(int *)(iVar23 + 0x521c);\n    local_a4 = *(int *)(iVar23 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(*(int *)(target + 4) + 0x24);\n      local_a4 = *(int *)(*(int *)(target + 4) + 0x20);\n    }\n    uVar5 = (uint)this_01->paddr_;\n    uVar6 = *(uint *)((int)&this_01->paddr_ + 4);\n    uVar20 = uVar5 - uVar22 & -local_a4;\n    uVar21 = uVar6 - (uVar5 < uVar22) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar13 = uVar5 - uVar20;\n    uVar16 = (uVar6 - uVar21) - (uint)(uVar5 < uVar20);\n    cVar9 = *(char *)(iVar23 + 0x318d);\n    if (uVar16 <= uVar6 && (uint)(uVar5 < uVar13) <= uVar6 - uVar16) {\n      uVar7 = *(uint *)((int)&this_01->vaddr_ + 4);\n      uVar8 = (uint)this_01->vaddr_;\n      if (uVar16 <= uVar7 && (uint)(uVar8 < uVar13) <= uVar7 - uVar16) {\n        *(uint *)&this_01->paddr_ = uVar20;\n        *(uint *)&this_01->vaddr_ = (uVar8 - uVar5) + uVar20;\n        *(uint *)((int)&this_01->vaddr_ + 4) =\n             ((uVar7 - uVar6) - (uint)(uVar8 < uVar5)) + uVar21 + (uint)CARRY4(uVar8 - uVar5,uVar20)\n        ;\n        this_01->field_0x19c = this_01->field_0x19c | 2;\n        *(uint *)((int)&this_01->paddr_ + 4) = uVar21;\n        iVar23 = uVar16 - (uVar13 < uVar22);\n        if (cVar9 != '\0') goto LAB_000887ba;\n        if (uVar13 - uVar22 == 0 && iVar23 == 0) goto LAB_0008878f;\n        if (this_01 == (Output_segment *)0x0) goto LAB_0008878f;\n        od = (Output_data *)operator_new(0x2c);\n        *(undefined4 *)&od->address_ = 0;\n        *(uint *)&od->data_size_ = uVar13 - uVar22;\n        bVar2 = od->field_0x1c;\n        *(undefined4 *)((int)&od->address_ + 4) = 0;\n        od[1]._vptr_Output_data = (_func_int_varargs **)0x0;\n        *(undefined4 *)&od[1].address_ = 1;\n        od->field_0x1c = bVar2 & 0xe0 | 10;\n        *(undefined4 *)((int)&od[1].address_ + 4) = 0;\n        *(int *)((int)&od->data_size_ + 4) = iVar23;\n        *(undefined4 *)&od->offset_ = 0xffffffff;\n        *(undefined4 *)((int)&od->offset_ + 4) = 0xffffffff;\n        od->_vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2759db);\n        Output_segment::add_initial_output_data(this_01,od);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar9 != '\0') goto LAB_00087f7a;\n    local_80 = (Output_segment *)0x0;\nLAB_00087f52:\n    if (pOVar17 != (Output_segment *)0x0) goto LAB_00087f5a;\n    pSVar12 = this->script_options_;\n    if ((pSVar12->script_sections_).saw_sections_clause_ != false) goto LAB_00087f99;\nLAB_00087fc3:\n    iVar15 = local_88;\n    shndx = 1;\n    if (*(char *)(iVar23 + 0x318d) == '\0') {\n      oVar24 = set_segment_offsets(this,target,local_80,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          Relaxation_debug_check::read_sections(this->relaxation_debug_check_,&this->section_list_);\n        }\n        else {\n          Relaxation_debug_check::verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);\n        }\n        iVar23 = *(int *)pbVar1;\n        iVar18 = *(int *)(iVar23 + 8);\n        if (iVar18 == 0) goto LAB_000888c2;\n      }\n      off = oVar24;\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar18 + 0x3209) != '\0') &&\n         (pcVar14 = *(code **)(*(int *)target + 0x6c), pcVar14 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      oVar24 = set_relocatable_section_offsets(this,&local_94->super_Output_data,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      off = oVar24;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      cVar9 = (*pcVar14)(target);\n      if (cVar9 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar14 = *(code **)(*(int *)target + 0x6c);\n          if (pcVar14 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar9 = local_88 < 2;\n        }\n        local_88 = iVar15 + 1;\n        if (cVar9 != '\0') {\n          clean_up_after_relaxation(this);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar15 + 1;\n    this_02 = Symbol_table::lookup(symtab,(char *)(unaff_EDI + 0x19b53f),(char *)0x0);\n    if ((this_02 != (Symbol *)0x0) && ((this_02->field_0x2c & 4) != 0)) {\n      if (local_80 == (Output_segment *)0x0) {\n        Symbol::set_undefined(this_02);\n      }\n      else {\n        Symbol::set_output_segment(this_02,local_80,SEGMENT_START);\n      }\n    }\n    off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);\n    ppOVar19 = (this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_start;\n    uVar22 = shndx;\n    if ((this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish != ppOVar19) {\n      do {\n        while (pOVar11 = *ppOVar19, pOVar11->out_shndx_ == 0xffffffff) {\n          p_Var3 = (pOVar11->super_Output_data)._vptr_Output_data[0xc];\n          if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n            pOVar11->out_shndx_ = uVar22;\n          }\n          else {\n            (*p_Var3)(pOVar11,uVar22);\n          }\n          uVar22 = uVar22 + 1;\n          ppOVar19 = ppOVar19 + 1;\n          if ((this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish == ppOVar19) goto LAB_00088157;\n        }\n        ppOVar19 = ppOVar19 + 1;\n      } while ((this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish != ppOVar19);\n    }\nLAB_00088157:\n    shndx = uVar22;\n    create_symtab_sections(this,input_objects,symtab,uVar22,(off_t *)local_b0,local_dynamic_count);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        assign_local_dynsym_offsets(this,input_objects);\n      }\n      Script_options::finalize_symbols(this->script_options_,symtab,this);\n      if (this->incremental_inputs_ != (Incremental_inputs *)0x0) {\n        Incremental_inputs::finalize(this->incremental_inputs_);\n        create_incremental_info_sections(this,symtab);\n      }\n      pOVar11 = create_shstrtab(this);\n      off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);\n      ppOVar19 = (this->unattached_section_list_).\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                 _M_impl._M_start;\n      uVar22 = shndx;\n      if (ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar9 = Parameters::doing_static_link(in_stack_ffffff34,in_stack_ffffff38);\n    iVar23 = extraout_ECX;\n    pOVar17 = local_90;\nLAB_00087f2e:\n    if (cVar9 == '\0') {\n      local_80 = (Output_segment *)0x0;\nLAB_00087f39:\n      if (local_8c == (Output_segment_headers *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f));\n      }\n      if (local_80 == (Output_segment *)0x0) goto LAB_00087f52;\nLAB_0008878f:\n      Output_segment::add_initial_output_data(local_80,&local_8c->super_Output_data);\n      if (pOVar17 != (Output_segment *)0x0) {\nLAB_00087f5a:\n        Output_segment::add_initial_output_data(pOVar17,&local_8c->super_Output_data);\n        if (local_80 == (Output_segment *)0x0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      Output_segment::add_initial_output_data(local_80,&local_94->super_Output_data);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = (Output_segment *)0x0;\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    pSVar12 = this->script_options_;\n    if ((pSVar12->script_sections_).saw_sections_clause_ == false) goto LAB_00088468;\nLAB_00087f99:\n    if ((pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0) goto LAB_00088468;\n    if (iVar23 != 0) goto code_r0x00087faf;\n  }\n  goto LAB_00088477;\nLAB_0008822e:\n  pOVar4 = *ppOVar19;\n  if (pOVar4->out_shndx_ == 0xffffffff) {\n    p_Var3 = (pOVar4->super_Output_data)._vptr_Output_data[0xc];\n    if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n      pOVar4->out_shndx_ = uVar22;\n    }\n    else {\n      (*p_Var3)(pOVar4,uVar22);\n    }\n    uVar22 = uVar22 + 1;\n    ppOVar19 = ppOVar19 + 1;\n    if ((this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == ppOVar19) goto LAB_00088259;\n    goto LAB_0008822e;\n  }\n  ppOVar19 = ppOVar19 + 1;\n  if ((this->unattached_section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish == ppOVar19) {\nLAB_00088259:\n    shndx = uVar22;\n    create_shdrs(this,pOVar11,(off_t *)local_b0);\n    if (this->any_postprocessing_sections_ == false) {\n      off = set_section_offsets(this,off,POSTPROCESSING_SECTIONS_PASS);\n      off = set_section_offsets(this,off,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);\n    }\n    Output_file_header::set_section_info(local_94,this->section_headers_,pOVar11);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined4 *)((int)&this->output_file_size_ + 4) = off._4_4_;\n    *(undefined4 *)&this->output_file_size_ = (undefined4)off;\n    return off;\n  }\n  goto LAB_0008822e;\ncode_r0x00087faf:\n  if (*(char *)(iVar23 + 0x318d) == '\0') {\n    Script_sections::put_headers_in_phdrs\n              (&pSVar12->script_sections_,&local_94->super_Output_data,&local_8c->super_Output_data)\n    ;\n    iVar23 = *(int *)(*(int *)pbVar1 + 8);\nLAB_00088468:\n    shndx = 1;\n    if (iVar23 == 0) goto LAB_00088477;\n  }\n  goto LAB_00087fc3;\n}" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) (function_declarator "finalize\n          (Layout *this,Input_objects *input_objects,Symbol_table *symtab,Target *target,Task *task)" identifier (parameter_list "(Layout *this,Input_objects *input_objects,Symbol_table *symtab,Target *target,Task *task)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Input_objects *input_objects" type_identifier (pointer_declarator "*input_objects" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) , (parameter_declaration "Target *target" type_identifier (pointer_declarator "*target" * identifier)) , (parameter_declaration "Task *task" type_identifier (pointer_declarator "*task" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  _func_int_varargs *p_Var3;\n  Output_section *pOVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  char cVar9;\n  General_options *this_00;\n  Object_format OVar10;\n  Output_segment *this_01;\n  Symbol *this_02;\n  Output_section *pOVar11;\n  Script_options *pSVar12;\n  uint uVar13;\n  Output_data *od;\n  code *pcVar14;\n  int extraout_ECX;\n  int iVar15;\n  uint uVar16;\n  Output_segment *pOVar17;\n  int iVar18;\n  pointer ppOVar19;\n  uint uVar20;\n  uint uVar21;\n  uint uVar22;\n  int iVar23;\n  int unaff_EDI;\n  off_t oVar24;\n  longlong lVar25;\n  Symbol_table *__in_chrg;\n  Parameters *in_stack_ffffff34;\n  Parameters *in_stack_ffffff38;\n  Output_data **local_b0;\n  int local_a4;\n  int local_a0;\n  undefined8 local_9c;\n  Output_file_header *local_94;\n  Output_segment *local_90;\n  Output_segment_headers *local_8c;\n  int local_88;\n  Output_segment *local_80;\n  uint local_dynamic_count;\n  uint forced_local_dynamic_count;\n  Output_section *dynstr;\n  uint shndx;\n  pointer local_64;\n  pointer local_60;\n  off_t off;\n  \n  __x86_get_pc_thunk_di();\n  local_dynamic_count = 0;\n  forced_local_dynamic_count = 0;\n  if (*(code **)(*(int *)target + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*(int *)target + 0x10))(target,this,input_objects,symtab);\n  }\n  count_local_symbols(this,task,input_objects);\n  link_stabs_sections(this);\n  pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;\n  iVar23 = *(int *)pbVar1;\n  if (*(int *)(iVar23 + 8) == 0) goto LAB_00088477;\n  if (*(char *)(*(int *)(iVar23 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar23 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar23 + 0x11) == '\0') {\n      pSVar12 = this->script_options_;\n      if (((pSVar12->script_sections_).saw_sections_clause_ == false) ||\n         (local_90 = (Output_segment *)0x0,\n         (pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)) {\n        local_90 = make_output_segment(this,6,4);\n        pSVar12 = this->script_options_;\n      }\n      shndx = 0;\n      local_64 = (pointer)0x0;\n      local_60 = (pointer)0x0;\n                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */\n      Versions::Versions((Versions *)&off,&pSVar12->version_script_info_,&this->dynpool_);\n                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */\n      create_dynamic_symtab\n                (this,input_objects,symtab,&dynstr,&local_dynamic_count,&forced_local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,(Versions *)&off);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar23 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n      }\n      if (((*(char *)(iVar23 + 0x1a25) == '\0') || (*(int *)(iVar23 + 0x1f64) != 0)) &&\n         (this->interp_segment_ == (Output_segment *)0x0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        create_interp(this,target);\n      }\n      finish_dynamic_section(this,input_objects,symtab);\n      Stringpool_template<char>::set_string_offsets(&this->dynpool_);\n      create_version_sections\n                (this,(Versions *)&off,symtab,forced_local_dynamic_count + local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,dynstr);\n      __in_chrg = symtab;\n      set_dynamic_symbol_size(this,symtab);\n      Versions::~Versions((Versions *)&off,(int)__in_chrg);\n      if (shndx != 0) {\n        operator_delete((void *)shndx);\n      }\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (Output_segment_headers *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = (Output_segment *)0x0;\n    }\n    local_8c = (Output_segment_headers *)operator_new(0x24);\n                    /* try { // try from 00088b86 to 00088b8a has its CatchHandler @ 00088ca5 */\n    Output_segment_headers::Output_segment_headers(local_8c,&this->segment_list_);\n  }\n  else {\n    local_90 = (Output_segment *)0x0;\n    local_8c = (Output_segment_headers *)0x0;\n  }\nLAB_00087db2:\n  local_94 = (Output_file_header *)operator_new(0x34);\n                    /* try { // try from 00087dda to 00087dde has its CatchHandler @ 00088cac */\n  Output_file_header::Output_file_header(local_94,target,symtab,local_8c);\n  off = CONCAT44(off._4_4_,local_94);\n  local_b0 = (Output_data **)&off;\n  std::vector<gold::Output_data*,_std::allocator<gold::Output_data*>_>::\n  emplace_back<gold::Output_data*>(&this->special_output_list_,local_b0);\n  if (local_8c != (Output_segment_headers *)0x0) {\n    off = CONCAT44(off._4_4_,local_8c);\n    std::vector<gold::Output_data*,_std::allocator<gold::Output_data*>_>::\n    emplace_back<gold::Output_data*>(&this->special_output_list_,local_b0);\n  }\n  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    iVar23 = *(int *)pbVar1;\n    iVar15 = *(int *)(iVar23 + 8);\n    if (iVar15 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    pcVar14 = *(code **)(*(int *)target + 0x68);\n    if (pcVar14 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n    }\nLAB_00088af4:\n    cVar9 = (*pcVar14)(target);\nLAB_00087e60:\n    if (cVar9 == '\0') goto LAB_00087e72;\n  }\n  else {\n    place_orphan_sections_in_script(this);\n    iVar23 = *(int *)pbVar1;\n    iVar15 = *(int *)(iVar23 + 8);\n    if (iVar15 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar23 + 0x14) & 8) == 0) {\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar9 = *(char *)(iVar15 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }\n  prepare_for_relaxation(this);\nLAB_00087e72:\n  local_88 = 0;\nLAB_00087e80:\n  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    this_00 = *(General_options **)(*(int *)pbVar1 + 8);\n    if (this_00 == (General_options *)0x0) goto LAB_00088477;\n    local_80 = (Output_segment *)0x0;\n    if ((this_00->relocatable_).value == false) {\n      local_80 = find_first_load_seg(this,target);\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = set_section_addresses_from_script(this,symtab);\nLAB_00088944:\n    this_00 = *(General_options **)(*(int *)pbVar1 + 8);\n    if (this_00 == (General_options *)0x0) goto LAB_00088477;\n  }\n  OVar10 = General_options::oformat_enum(this_00);\n  this_01 = (Output_segment *)0x0;\n  if (OVar10 == OBJECT_FORMAT_ELF) {\n    this_01 = local_80;\n  }\n  iVar23 = *(int *)(*(int *)pbVar1 + 8);\n  if (iVar23 != 0) {\n    iVar15 = *(int *)(target + 4);\n    if (*(char *)(iVar15 + 0x30) == '\0') {\n      if (*(char *)(iVar23 + 0x41b8) != '\0') {\n        local_9c = *(undefined8 *)(iVar23 + 0x5218);\n        if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n          local_9c = *(undefined8 *)(iVar15 + 0x20);\n        }\n        lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x41bc),*(undefined4 *)(iVar23 + 0x41c0),\n                           (int)local_9c,local_9c._4_4_);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar23 + 0x423c) != '\0') {\n      local_9c = *(undefined8 *)(iVar23 + 0x5218);\n      if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n        local_9c = *(undefined8 *)(iVar15 + 0x20);\n      }\n      lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x4240),*(undefined4 *)(iVar23 + 0x4244),\n                         (int)local_9c,local_9c._4_4_);\njoined_r0x0008887a:\n      if (lVar25 != 0) {\n        cVar9 = *(char *)(iVar23 + 0x318d);\n        pOVar17 = (Output_segment *)0x0;\n        goto LAB_00087f2e;\n      }\n    }\n    pOVar17 = local_90;\n    if ((local_90 != (Output_segment *)0x0) && (this_01 == (Output_segment *)0x0)) {\n      if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xaef,(char *)(unaff_EDI + 0x19c44f));\n      }\n      cVar9 = *(char *)(iVar23 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar9 = *(char *)(iVar23 + 0x318d);\n    if (this_01 == (Output_segment *)0x0) goto LAB_00087f2e;\n    local_80 = this_01;\n    if (((this_01->field_0x19c & 2) == 0) ||\n       ((this->script_options_->script_sections_).saw_sections_clause_ != false)) {\n      if (cVar9 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar9 != '\0') goto LAB_000887ba;\n    if ((((local_94->super_Output_data).field_0x1c & 2) == 0) &&\n       ((*(local_94->super_Output_data)._vptr_Output_data[0xe])(local_94),\n       ((local_94->super_Output_data).field_0x1c & 2) == 0)) {\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0x163,(char *)(unaff_EDI + 0x19c43b));\n    }\n    if (((local_8c->super_Output_data).field_0x1c & 2) == 0) {\n      (*(local_8c->super_Output_data)._vptr_Output_data[0xe])(local_8c);\n      if (((local_8c->super_Output_data).field_0x1c & 2) == 0) goto LAB_00088c5f;\n      if (((local_94->super_Output_data).field_0x1c & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0xcf,(char *)(unaff_EDI + 0x19c68f));\n      }\n    }\n    uVar22 = (int)(local_94->super_Output_data).data_size_ +\n             (int)(local_8c->super_Output_data).data_size_;\n    iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar23 == 0) {\n                    /* WARNING: Subroutine does not return */\n      Target::abi_pagesize((Target *)in_stack_ffffff34);\n    }\n    local_a0 = *(int *)(iVar23 + 0x521c);\n    local_a4 = *(int *)(iVar23 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(*(int *)(target + 4) + 0x24);\n      local_a4 = *(int *)(*(int *)(target + 4) + 0x20);\n    }\n    uVar5 = (uint)this_01->paddr_;\n    uVar6 = *(uint *)((int)&this_01->paddr_ + 4);\n    uVar20 = uVar5 - uVar22 & -local_a4;\n    uVar21 = uVar6 - (uVar5 < uVar22) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar13 = uVar5 - uVar20;\n    uVar16 = (uVar6 - uVar21) - (uint)(uVar5 < uVar20);\n    cVar9 = *(char *)(iVar23 + 0x318d);\n    if (uVar16 <= uVar6 && (uint)(uVar5 < uVar13) <= uVar6 - uVar16) {\n      uVar7 = *(uint *)((int)&this_01->vaddr_ + 4);\n      uVar8 = (uint)this_01->vaddr_;\n      if (uVar16 <= uVar7 && (uint)(uVar8 < uVar13) <= uVar7 - uVar16) {\n        *(uint *)&this_01->paddr_ = uVar20;\n        *(uint *)&this_01->vaddr_ = (uVar8 - uVar5) + uVar20;\n        *(uint *)((int)&this_01->vaddr_ + 4) =\n             ((uVar7 - uVar6) - (uint)(uVar8 < uVar5)) + uVar21 + (uint)CARRY4(uVar8 - uVar5,uVar20)\n        ;\n        this_01->field_0x19c = this_01->field_0x19c | 2;\n        *(uint *)((int)&this_01->paddr_ + 4) = uVar21;\n        iVar23 = uVar16 - (uVar13 < uVar22);\n        if (cVar9 != '\0') goto LAB_000887ba;\n        if (uVar13 - uVar22 == 0 && iVar23 == 0) goto LAB_0008878f;\n        if (this_01 == (Output_segment *)0x0) goto LAB_0008878f;\n        od = (Output_data *)operator_new(0x2c);\n        *(undefined4 *)&od->address_ = 0;\n        *(uint *)&od->data_size_ = uVar13 - uVar22;\n        bVar2 = od->field_0x1c;\n        *(undefined4 *)((int)&od->address_ + 4) = 0;\n        od[1]._vptr_Output_data = (_func_int_varargs **)0x0;\n        *(undefined4 *)&od[1].address_ = 1;\n        od->field_0x1c = bVar2 & 0xe0 | 10;\n        *(undefined4 *)((int)&od[1].address_ + 4) = 0;\n        *(int *)((int)&od->data_size_ + 4) = iVar23;\n        *(undefined4 *)&od->offset_ = 0xffffffff;\n        *(undefined4 *)((int)&od->offset_ + 4) = 0xffffffff;\n        od->_vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2759db);\n        Output_segment::add_initial_output_data(this_01,od);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar9 != '\0') goto LAB_00087f7a;\n    local_80 = (Output_segment *)0x0;\nLAB_00087f52:\n    if (pOVar17 != (Output_segment *)0x0) goto LAB_00087f5a;\n    pSVar12 = this->script_options_;\n    if ((pSVar12->script_sections_).saw_sections_clause_ != false) goto LAB_00087f99;\nLAB_00087fc3:\n    iVar15 = local_88;\n    shndx = 1;\n    if (*(char *)(iVar23 + 0x318d) == '\0') {\n      oVar24 = set_segment_offsets(this,target,local_80,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          Relaxation_debug_check::read_sections(this->relaxation_debug_check_,&this->section_list_);\n        }\n        else {\n          Relaxation_debug_check::verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);\n        }\n        iVar23 = *(int *)pbVar1;\n        iVar18 = *(int *)(iVar23 + 8);\n        if (iVar18 == 0) goto LAB_000888c2;\n      }\n      off = oVar24;\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar18 + 0x3209) != '\0') &&\n         (pcVar14 = *(code **)(*(int *)target + 0x6c), pcVar14 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      oVar24 = set_relocatable_section_offsets(this,&local_94->super_Output_data,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      off = oVar24;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      cVar9 = (*pcVar14)(target);\n      if (cVar9 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar14 = *(code **)(*(int *)target + 0x6c);\n          if (pcVar14 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar9 = local_88 < 2;\n        }\n        local_88 = iVar15 + 1;\n        if (cVar9 != '\0') {\n          clean_up_after_relaxation(this);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar15 + 1;\n    this_02 = Symbol_table::lookup(symtab,(char *)(unaff_EDI + 0x19b53f),(char *)0x0);\n    if ((this_02 != (Symbol *)0x0) && ((this_02->field_0x2c & 4) != 0)) {\n      if (local_80 == (Output_segment *)0x0) {\n        Symbol::set_undefined(this_02);\n      }\n      else {\n        Symbol::set_output_segment(this_02,local_80,SEGMENT_START);\n      }\n    }\n    off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);\n    ppOVar19 = (this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_start;\n    uVar22 = shndx;\n    if ((this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish != ppOVar19) {\n      do {\n        while (pOVar11 = *ppOVar19, pOVar11->out_shndx_ == 0xffffffff) {\n          p_Var3 = (pOVar11->super_Output_data)._vptr_Output_data[0xc];\n          if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n            pOVar11->out_shndx_ = uVar22;\n          }\n          else {\n            (*p_Var3)(pOVar11,uVar22);\n          }\n          uVar22 = uVar22 + 1;\n          ppOVar19 = ppOVar19 + 1;\n          if ((this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish == ppOVar19) goto LAB_00088157;\n        }\n        ppOVar19 = ppOVar19 + 1;\n      } while ((this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish != ppOVar19);\n    }\nLAB_00088157:\n    shndx = uVar22;\n    create_symtab_sections(this,input_objects,symtab,uVar22,(off_t *)local_b0,local_dynamic_count);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        assign_local_dynsym_offsets(this,input_objects);\n      }\n      Script_options::finalize_symbols(this->script_options_,symtab,this);\n      if (this->incremental_inputs_ != (Incremental_inputs *)0x0) {\n        Incremental_inputs::finalize(this->incremental_inputs_);\n        create_incremental_info_sections(this,symtab);\n      }\n      pOVar11 = create_shstrtab(this);\n      off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);\n      ppOVar19 = (this->unattached_section_list_).\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                 _M_impl._M_start;\n      uVar22 = shndx;\n      if (ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar9 = Parameters::doing_static_link(in_stack_ffffff34,in_stack_ffffff38);\n    iVar23 = extraout_ECX;\n    pOVar17 = local_90;\nLAB_00087f2e:\n    if (cVar9 == '\0') {\n      local_80 = (Output_segment *)0x0;\nLAB_00087f39:\n      if (local_8c == (Output_segment_headers *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f));\n      }\n      if (local_80 == (Output_segment *)0x0) goto LAB_00087f52;\nLAB_0008878f:\n      Output_segment::add_initial_output_data(local_80,&local_8c->super_Output_data);\n      if (pOVar17 != (Output_segment *)0x0) {\nLAB_00087f5a:\n        Output_segment::add_initial_output_data(pOVar17,&local_8c->super_Output_data);\n        if (local_80 == (Output_segment *)0x0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      Output_segment::add_initial_output_data(local_80,&local_94->super_Output_data);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = (Output_segment *)0x0;\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    pSVar12 = this->script_options_;\n    if ((pSVar12->script_sections_).saw_sections_clause_ == false) goto LAB_00088468;\nLAB_00087f99:\n    if ((pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0) goto LAB_00088468;\n    if (iVar23 != 0) goto code_r0x00087faf;\n  }\n  goto LAB_00088477;\nLAB_0008822e:\n  pOVar4 = *ppOVar19;\n  if (pOVar4->out_shndx_ == 0xffffffff) {\n    p_Var3 = (pOVar4->super_Output_data)._vptr_Output_data[0xc];\n    if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n      pOVar4->out_shndx_ = uVar22;\n    }\n    else {\n      (*p_Var3)(pOVar4,uVar22);\n    }\n    uVar22 = uVar22 + 1;\n    ppOVar19 = ppOVar19 + 1;\n    if ((this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == ppOVar19) goto LAB_00088259;\n    goto LAB_0008822e;\n  }\n  ppOVar19 = ppOVar19 + 1;\n  if ((this->unattached_section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish == ppOVar19) {\nLAB_00088259:\n    shndx = uVar22;\n    create_shdrs(this,pOVar11,(off_t *)local_b0);\n    if (this->any_postprocessing_sections_ == false) {\n      off = set_section_offsets(this,off,POSTPROCESSING_SECTIONS_PASS);\n      off = set_section_offsets(this,off,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);\n    }\n    Output_file_header::set_section_info(local_94,this->section_headers_,pOVar11);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined4 *)((int)&this->output_file_size_ + 4) = off._4_4_;\n    *(undefined4 *)&this->output_file_size_ = (undefined4)off;\n    return off;\n  }\n  goto LAB_0008822e;\ncode_r0x00087faf:\n  if (*(char *)(iVar23 + 0x318d) == '\0') {\n    Script_sections::put_headers_in_phdrs\n              (&pSVar12->script_sections_,&local_94->super_Output_data,&local_8c->super_Output_data)\n    ;\n    iVar23 = *(int *)(*(int *)pbVar1 + 8);\nLAB_00088468:\n    shndx = 1;\n    if (iVar23 == 0) goto LAB_00088477;\n  }\n  goto LAB_00087fc3;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "_func_int_varargs *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "Output_section *pOVar4;" type_identifier (pointer_declarator "*pOVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "General_options *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "Object_format OVar10;" type_identifier identifier ;) (declaration "Output_segment *this_01;" type_identifier (pointer_declarator "*this_01" * identifier) ;) (declaration "Symbol *this_02;" type_identifier (pointer_declarator "*this_02" * identifier) ;) (declaration "Output_section *pOVar11;" type_identifier (pointer_declarator "*pOVar11" * identifier) ;) (declaration "Script_options *pSVar12;" type_identifier (pointer_declarator "*pSVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "Output_data *od;" type_identifier (pointer_declarator "*od" * identifier) ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "Output_segment *pOVar17;" type_identifier (pointer_declarator "*pOVar17" * identifier) ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "pointer ppOVar19;" type_identifier identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "off_t oVar24;" type_identifier identifier ;) (declaration "longlong lVar25;" type_identifier identifier ;) (declaration "Symbol_table *__in_chrg;" type_identifier (pointer_declarator "*__in_chrg" * identifier) ;) (declaration "Parameters *in_stack_ffffff34;" type_identifier (pointer_declarator "*in_stack_ffffff34" * identifier) ;) (declaration "Parameters *in_stack_ffffff38;" type_identifier (pointer_declarator "*in_stack_ffffff38" * identifier) ;) (declaration "Output_data **local_b0;" type_identifier (pointer_declarator "**local_b0" * (pointer_declarator "*local_b0" * identifier)) ;) (declaration "int local_a4;" primitive_type identifier ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "undefined8 local_9c;" type_identifier identifier ;) (declaration "Output_file_header *local_94;" type_identifier (pointer_declarator "*local_94" * identifier) ;) (declaration "Output_segment *local_90;" type_identifier (pointer_declarator "*local_90" * identifier) ;) (declaration "Output_segment_headers *local_8c;" type_identifier (pointer_declarator "*local_8c" * identifier) ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "Output_segment *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "uint local_dynamic_count;" type_identifier identifier ;) (declaration "uint forced_local_dynamic_count;" type_identifier identifier ;) (declaration "Output_section *dynstr;" type_identifier (pointer_declarator "*dynstr" * identifier) ;) (declaration "uint shndx;" type_identifier identifier ;) (declaration "pointer local_64;" type_identifier identifier ;) (declaration "pointer local_60;" type_identifier identifier ;) (declaration "off_t off;" type_identifier identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_dynamic_count = 0;" (assignment_expression "local_dynamic_count = 0" identifier = number_literal) ;) (expression_statement "forced_local_dynamic_count = 0;" (assignment_expression "forced_local_dynamic_count = 0" identifier = number_literal) ;) (if_statement "if (*(code **)(*(int *)target + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*(int *)target + 0x10))(target,this,input_objects,symtab);\n  }" if (parenthesized_expression "(*(code **)(*(int *)target + 0x10) != (code *)(unaff_EDI + 0x1137))" ( (binary_expression "*(code **)(*(int *)target + 0x10) != (code *)(unaff_EDI + 0x1137)" (pointer_expression "*(code **)(*(int *)target + 0x10)" * (cast_expression "(code **)(*(int *)target + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)target + 0x10)" ( (binary_expression "*(int *)target + 0x10" (pointer_expression "*(int *)target" * (cast_expression "(int *)target" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) != (cast_expression "(code *)(unaff_EDI + 0x1137)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1137)" ( (binary_expression "unaff_EDI + 0x1137" identifier + number_literal) )))) )) (compound_statement "{\n    (**(code **)(*(int *)target + 0x10))(target,this,input_objects,symtab);\n  }" { (expression_statement "(**(code **)(*(int *)target + 0x10))(target,this,input_objects,symtab);" (call_expression "(**(code **)(*(int *)target + 0x10))(target,this,input_objects,symtab)" (parenthesized_expression "(**(code **)(*(int *)target + 0x10))" ( (pointer_expression "**(code **)(*(int *)target + 0x10)" * (pointer_expression "*(code **)(*(int *)target + 0x10)" * (cast_expression "(code **)(*(int *)target + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)target + 0x10)" ( (binary_expression "*(int *)target + 0x10" (pointer_expression "*(int *)target" * (cast_expression "(int *)target" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(target,this,input_objects,symtab)" ( identifier , identifier , identifier , identifier ))) ;) })) (expression_statement "count_local_symbols(this,task,input_objects);" (call_expression "count_local_symbols(this,task,input_objects)" identifier (argument_list "(this,task,input_objects)" ( identifier , identifier , identifier ))) ;) (expression_statement "link_stabs_sections(this);" (call_expression "link_stabs_sections(this)" identifier (argument_list "(this)" ( identifier ))) ;) (expression_statement "pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;" (assignment_expression "pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22" identifier = (binary_expression "BYTE_ARRAY_0027a62d + unaff_EDI + 0x22" (binary_expression "BYTE_ARRAY_0027a62d + unaff_EDI" identifier + identifier) + number_literal)) ;) (expression_statement "iVar23 = *(int *)pbVar1;" (assignment_expression "iVar23 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*(int *)(iVar23 + 8) == 0) goto LAB_00088477;" if (parenthesized_expression "(*(int *)(iVar23 + 8) == 0)" ( (binary_expression "*(int *)(iVar23 + 8) == 0" (pointer_expression "*(int *)(iVar23 + 8)" * (cast_expression "(int *)(iVar23 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 8)" ( (binary_expression "iVar23 + 8" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) (if_statement "if (*(char *)(*(int *)(iVar23 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar23 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar23 + 0x11) == '\0') {\n      pSVar12 = this->script_options_;\n      if (((pSVar12->script_sections_).saw_sections_clause_ == false) ||\n         (local_90 = (Output_segment *)0x0,\n         (pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)) {\n        local_90 = make_output_segment(this,6,4);\n        pSVar12 = this->script_options_;\n      }\n      shndx = 0;\n      local_64 = (pointer)0x0;\n      local_60 = (pointer)0x0;\n                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */\n      Versions::Versions((Versions *)&off,&pSVar12->version_script_info_,&this->dynpool_);\n                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */\n      create_dynamic_symtab\n                (this,input_objects,symtab,&dynstr,&local_dynamic_count,&forced_local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,(Versions *)&off);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar23 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n      }\n      if (((*(char *)(iVar23 + 0x1a25) == '\0') || (*(int *)(iVar23 + 0x1f64) != 0)) &&\n         (this->interp_segment_ == (Output_segment *)0x0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        create_interp(this,target);\n      }\n      finish_dynamic_section(this,input_objects,symtab);\n      Stringpool_template<char>::set_string_offsets(&this->dynpool_);\n      create_version_sections\n                (this,(Versions *)&off,symtab,forced_local_dynamic_count + local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,dynstr);\n      __in_chrg = symtab;\n      set_dynamic_symbol_size(this,symtab);\n      Versions::~Versions((Versions *)&off,(int)__in_chrg);\n      if (shndx != 0) {\n        operator_delete((void *)shndx);\n      }\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (Output_segment_headers *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = (Output_segment *)0x0;\n    }\n    local_8c = (Output_segment_headers *)operator_new(0x24);\n                    /* try { // try from 00088b86 to 00088b8a has its CatchHandler @ 00088ca5 */\n    Output_segment_headers::Output_segment_headers(local_8c,&this->segment_list_);\n  }\n  else {\n    local_90 = (Output_segment *)0x0;\n    local_8c = (Output_segment_headers *)0x0;\n  }" if (parenthesized_expression "(*(char *)(*(int *)(iVar23 + 8) + 0x318d) == '\0')" ( (binary_expression "*(char *)(*(int *)(iVar23 + 8) + 0x318d) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar23 + 8) + 0x318d)" * (cast_expression "(char *)(*(int *)(iVar23 + 8) + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar23 + 8) + 0x318d)" ( (binary_expression "*(int *)(iVar23 + 8) + 0x318d" (pointer_expression "*(int *)(iVar23 + 8)" * (cast_expression "(int *)(iVar23 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 8)" ( (binary_expression "iVar23 + 8" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(char *)(iVar23 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar23 + 0x11) == '\0') {\n      pSVar12 = this->script_options_;\n      if (((pSVar12->script_sections_).saw_sections_clause_ == false) ||\n         (local_90 = (Output_segment *)0x0,\n         (pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)) {\n        local_90 = make_output_segment(this,6,4);\n        pSVar12 = this->script_options_;\n      }\n      shndx = 0;\n      local_64 = (pointer)0x0;\n      local_60 = (pointer)0x0;\n                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */\n      Versions::Versions((Versions *)&off,&pSVar12->version_script_info_,&this->dynpool_);\n                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */\n      create_dynamic_symtab\n                (this,input_objects,symtab,&dynstr,&local_dynamic_count,&forced_local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,(Versions *)&off);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar23 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n      }\n      if (((*(char *)(iVar23 + 0x1a25) == '\0') || (*(int *)(iVar23 + 0x1f64) != 0)) &&\n         (this->interp_segment_ == (Output_segment *)0x0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        create_interp(this,target);\n      }\n      finish_dynamic_section(this,input_objects,symtab);\n      Stringpool_template<char>::set_string_offsets(&this->dynpool_);\n      create_version_sections\n                (this,(Versions *)&off,symtab,forced_local_dynamic_count + local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,dynstr);\n      __in_chrg = symtab;\n      set_dynamic_symbol_size(this,symtab);\n      Versions::~Versions((Versions *)&off,(int)__in_chrg);\n      if (shndx != 0) {\n        operator_delete((void *)shndx);\n      }\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (Output_segment_headers *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = (Output_segment *)0x0;\n    }\n    local_8c = (Output_segment_headers *)operator_new(0x24);\n                    /* try { // try from 00088b86 to 00088b8a has its CatchHandler @ 00088ca5 */\n    Output_segment_headers::Output_segment_headers(local_8c,&this->segment_list_);\n  }" { (if_statement "if (*(char *)(iVar23 + 0x10) == '\0') goto LAB_00088c31;" if (parenthesized_expression "(*(char *)(iVar23 + 0x10) == '\0')" ( (binary_expression "*(char *)(iVar23 + 0x10) == '\0'" (pointer_expression "*(char *)(iVar23 + 0x10)" * (cast_expression "(char *)(iVar23 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x10)" ( (binary_expression "iVar23 + 0x10" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00088c31;" goto statement_identifier ;)) (if_statement "if (*(char *)(iVar23 + 0x11) == '\0') {\n      pSVar12 = this->script_options_;\n      if (((pSVar12->script_sections_).saw_sections_clause_ == false) ||\n         (local_90 = (Output_segment *)0x0,\n         (pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)) {\n        local_90 = make_output_segment(this,6,4);\n        pSVar12 = this->script_options_;\n      }\n      shndx = 0;\n      local_64 = (pointer)0x0;\n      local_60 = (pointer)0x0;\n                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */\n      Versions::Versions((Versions *)&off,&pSVar12->version_script_info_,&this->dynpool_);\n                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */\n      create_dynamic_symtab\n                (this,input_objects,symtab,&dynstr,&local_dynamic_count,&forced_local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,(Versions *)&off);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar23 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n      }\n      if (((*(char *)(iVar23 + 0x1a25) == '\0') || (*(int *)(iVar23 + 0x1f64) != 0)) &&\n         (this->interp_segment_ == (Output_segment *)0x0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        create_interp(this,target);\n      }\n      finish_dynamic_section(this,input_objects,symtab);\n      Stringpool_template<char>::set_string_offsets(&this->dynpool_);\n      create_version_sections\n                (this,(Versions *)&off,symtab,forced_local_dynamic_count + local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,dynstr);\n      __in_chrg = symtab;\n      set_dynamic_symbol_size(this,symtab);\n      Versions::~Versions((Versions *)&off,(int)__in_chrg);\n      if (shndx != 0) {\n        operator_delete((void *)shndx);\n      }\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (Output_segment_headers *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = (Output_segment *)0x0;\n    }" if (parenthesized_expression "(*(char *)(iVar23 + 0x11) == '\0')" ( (binary_expression "*(char *)(iVar23 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar23 + 0x11)" * (cast_expression "(char *)(iVar23 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x11)" ( (binary_expression "iVar23 + 0x11" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pSVar12 = this->script_options_;\n      if (((pSVar12->script_sections_).saw_sections_clause_ == false) ||\n         (local_90 = (Output_segment *)0x0,\n         (pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)) {\n        local_90 = make_output_segment(this,6,4);\n        pSVar12 = this->script_options_;\n      }\n      shndx = 0;\n      local_64 = (pointer)0x0;\n      local_60 = (pointer)0x0;\n                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */\n      Versions::Versions((Versions *)&off,&pSVar12->version_script_info_,&this->dynpool_);\n                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */\n      create_dynamic_symtab\n                (this,input_objects,symtab,&dynstr,&local_dynamic_count,&forced_local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,(Versions *)&off);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar23 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n      }\n      if (((*(char *)(iVar23 + 0x1a25) == '\0') || (*(int *)(iVar23 + 0x1f64) != 0)) &&\n         (this->interp_segment_ == (Output_segment *)0x0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        create_interp(this,target);\n      }\n      finish_dynamic_section(this,input_objects,symtab);\n      Stringpool_template<char>::set_string_offsets(&this->dynpool_);\n      create_version_sections\n                (this,(Versions *)&off,symtab,forced_local_dynamic_count + local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,dynstr);\n      __in_chrg = symtab;\n      set_dynamic_symbol_size(this,symtab);\n      Versions::~Versions((Versions *)&off,(int)__in_chrg);\n      if (shndx != 0) {\n        operator_delete((void *)shndx);\n      }\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (Output_segment_headers *)0x0;\n        goto LAB_00087db2;\n      }\n    }" { (expression_statement "pSVar12 = this->script_options_;" (assignment_expression "pSVar12 = this->script_options_" identifier = (field_expression "this->script_options_" identifier -> field_identifier)) ;) (if_statement "if (((pSVar12->script_sections_).saw_sections_clause_ == false) ||\n         (local_90 = (Output_segment *)0x0,\n         (pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)) {\n        local_90 = make_output_segment(this,6,4);\n        pSVar12 = this->script_options_;\n      }" if (parenthesized_expression "(((pSVar12->script_sections_).saw_sections_clause_ == false) ||\n         (local_90 = (Output_segment *)0x0,\n         (pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0))" ( (binary_expression "((pSVar12->script_sections_).saw_sections_clause_ == false) ||\n         (local_90 = (Output_segment *)0x0,\n         (pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)" (parenthesized_expression "((pSVar12->script_sections_).saw_sections_clause_ == false)" ( (binary_expression "(pSVar12->script_sections_).saw_sections_clause_ == false" (field_expression "(pSVar12->script_sections_).saw_sections_clause_" (parenthesized_expression "(pSVar12->script_sections_)" ( (field_expression "pSVar12->script_sections_" identifier -> field_identifier) )) . field_identifier) == false) )) || (parenthesized_expression "(local_90 = (Output_segment *)0x0,\n         (pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)" ( (comma_expression "local_90 = (Output_segment *)0x0,\n         (pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0" (assignment_expression "local_90 = (Output_segment *)0x0" identifier = (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) , (binary_expression "(pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0" (field_expression "(pSVar12->script_sections_).phdrs_elements_" (parenthesized_expression "(pSVar12->script_sections_)" ( (field_expression "pSVar12->script_sections_" identifier -> field_identifier) )) . field_identifier) == (cast_expression "(Phdrs_elements *)0x0" ( (type_descriptor "Phdrs_elements *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        local_90 = make_output_segment(this,6,4);\n        pSVar12 = this->script_options_;\n      }" { (expression_statement "local_90 = make_output_segment(this,6,4);" (assignment_expression "local_90 = make_output_segment(this,6,4)" identifier = (call_expression "make_output_segment(this,6,4)" identifier (argument_list "(this,6,4)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "pSVar12 = this->script_options_;" (assignment_expression "pSVar12 = this->script_options_" identifier = (field_expression "this->script_options_" identifier -> field_identifier)) ;) })) (expression_statement "shndx = 0;" (assignment_expression "shndx = 0" identifier = number_literal) ;) (expression_statement "local_64 = (pointer)0x0;" (assignment_expression "local_64 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "local_60 = (pointer)0x0;" (assignment_expression "local_60 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) comment (labeled_statement "Versions::Versions((Versions *)&off,&pSVar12->version_script_info_,&this->dynpool_);" statement_identifier : (ERROR ":" :) (expression_statement "Versions((Versions *)&off,&pSVar12->version_script_info_,&this->dynpool_);" (call_expression "Versions((Versions *)&off,&pSVar12->version_script_info_,&this->dynpool_)" identifier (argument_list "((Versions *)&off,&pSVar12->version_script_info_,&this->dynpool_)" ( (cast_expression "(Versions *)&off" ( (type_descriptor "Versions *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&off" & identifier)) , (pointer_expression "&pSVar12->version_script_info_" & (field_expression "pSVar12->version_script_info_" identifier -> field_identifier)) , (pointer_expression "&this->dynpool_" & (field_expression "this->dynpool_" identifier -> field_identifier)) ))) ;)) comment (expression_statement "create_dynamic_symtab\n                (this,input_objects,symtab,&dynstr,&local_dynamic_count,&forced_local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,(Versions *)&off);" (call_expression "create_dynamic_symtab\n                (this,input_objects,symtab,&dynstr,&local_dynamic_count,&forced_local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,(Versions *)&off)" identifier (argument_list "(this,input_objects,symtab,&dynstr,&local_dynamic_count,&forced_local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,(Versions *)&off)" ( identifier , identifier , identifier , (pointer_expression "&dynstr" & identifier) , (pointer_expression "&local_dynamic_count" & identifier) , (pointer_expression "&forced_local_dynamic_count" & identifier) , (binary_expression "(vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx" (parenthesized_expression "(vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)" ( (binary_expression "vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *" (binary_expression "vector<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "vector<gold::Symbol*,_std::allocator<gold" (binary_expression "vector<gold::Symbol*,_std" (binary_expression "vector<gold" identifier < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) > (pointer_expression "*" * identifier)) )) & identifier) , (cast_expression "(Versions *)&off" ( (type_descriptor "Versions *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&off" & identifier)) ))) ;) (expression_statement "iVar23 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar23 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (iVar23 == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n      }" if (parenthesized_expression "(iVar23 == 0)" ( (binary_expression "iVar23 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */\n        do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n      }" { comment comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f))" identifier (argument_list "((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f))" ( (cast_expression "(char *)(unaff_EDI + 0x198c47)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x198c47)" ( (binary_expression "unaff_EDI + 0x198c47" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x19c67f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x19c67f)" ( (binary_expression "unaff_EDI + 0x19c67f" identifier + number_literal) ))) ))) ;) })) (if_statement "if (((*(char *)(iVar23 + 0x1a25) == '\0') || (*(int *)(iVar23 + 0x1f64) != 0)) &&\n         (this->interp_segment_ == (Output_segment *)0x0)) {\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        create_interp(this,target);\n      }" if (parenthesized_expression "(((*(char *)(iVar23 + 0x1a25) == '\0') || (*(int *)(iVar23 + 0x1f64) != 0)) &&\n         (this->interp_segment_ == (Output_segment *)0x0))" ( (binary_expression "((*(char *)(iVar23 + 0x1a25) == '\0') || (*(int *)(iVar23 + 0x1f64) != 0)) &&\n         (this->interp_segment_ == (Output_segment *)0x0)" (parenthesized_expression "((*(char *)(iVar23 + 0x1a25) == '\0') || (*(int *)(iVar23 + 0x1f64) != 0))" ( (binary_expression "(*(char *)(iVar23 + 0x1a25) == '\0') || (*(int *)(iVar23 + 0x1f64) != 0)" (parenthesized_expression "(*(char *)(iVar23 + 0x1a25) == '\0')" ( (binary_expression "*(char *)(iVar23 + 0x1a25) == '\0'" (pointer_expression "*(char *)(iVar23 + 0x1a25)" * (cast_expression "(char *)(iVar23 + 0x1a25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x1a25)" ( (binary_expression "iVar23 + 0x1a25" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(int *)(iVar23 + 0x1f64) != 0)" ( (binary_expression "*(int *)(iVar23 + 0x1f64) != 0" (pointer_expression "*(int *)(iVar23 + 0x1f64)" * (cast_expression "(int *)(iVar23 + 0x1f64)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x1f64)" ( (binary_expression "iVar23 + 0x1f64" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(this->interp_segment_ == (Output_segment *)0x0)" ( (binary_expression "this->interp_segment_ == (Output_segment *)0x0" (field_expression "this->interp_segment_" identifier -> field_identifier) == (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */\n        create_interp(this,target);\n      }" { comment (expression_statement "create_interp(this,target);" (call_expression "create_interp(this,target)" identifier (argument_list "(this,target)" ( identifier , identifier ))) ;) })) (expression_statement "finish_dynamic_section(this,input_objects,symtab);" (call_expression "finish_dynamic_section(this,input_objects,symtab)" identifier (argument_list "(this,input_objects,symtab)" ( identifier , identifier , identifier ))) ;) (expression_statement "Stringpool_template<char>::set_string_offsets(&this->dynpool_);" (binary_expression "Stringpool_template<char>::set_string_offsets(&this->dynpool_)" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) (call_expression "set_string_offsets(&this->dynpool_)" identifier (argument_list "(&this->dynpool_)" ( (pointer_expression "&this->dynpool_" & (field_expression "this->dynpool_" identifier -> field_identifier)) )))) ;) (expression_statement "create_version_sections\n                (this,(Versions *)&off,symtab,forced_local_dynamic_count + local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,dynstr);" (call_expression "create_version_sections\n                (this,(Versions *)&off,symtab,forced_local_dynamic_count + local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,dynstr)" identifier (argument_list "(this,(Versions *)&off,symtab,forced_local_dynamic_count + local_dynamic_count,\n                 (vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx,dynstr)" ( identifier , (cast_expression "(Versions *)&off" ( (type_descriptor "Versions *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&off" & identifier)) , identifier , (binary_expression "forced_local_dynamic_count + local_dynamic_count" identifier + identifier) , (binary_expression "(vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)&shndx" (parenthesized_expression "(vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *)" ( (binary_expression "vector<gold::Symbol*,_std::allocator<gold::Symbol*>_> *" (binary_expression "vector<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "vector<gold::Symbol*,_std::allocator<gold" (binary_expression "vector<gold::Symbol*,_std" (binary_expression "vector<gold" identifier < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) > (pointer_expression "*" * identifier)) )) & identifier) , identifier ))) ;) (expression_statement "__in_chrg = symtab;" (assignment_expression "__in_chrg = symtab" identifier = identifier) ;) (expression_statement "set_dynamic_symbol_size(this,symtab);" (call_expression "set_dynamic_symbol_size(this,symtab)" identifier (argument_list "(this,symtab)" ( identifier , identifier ))) ;) (labeled_statement "Versions::~Versions((Versions *)&off,(int)__in_chrg);" statement_identifier : (ERROR ":" :) (expression_statement "~Versions((Versions *)&off,(int)__in_chrg);" (unary_expression "~Versions((Versions *)&off,(int)__in_chrg)" ~ (call_expression "Versions((Versions *)&off,(int)__in_chrg)" identifier (argument_list "((Versions *)&off,(int)__in_chrg)" ( (cast_expression "(Versions *)&off" ( (type_descriptor "Versions *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&off" & identifier)) , (cast_expression "(int)__in_chrg" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;)) (if_statement "if (shndx != 0) {\n        operator_delete((void *)shndx);\n      }" if (parenthesized_expression "(shndx != 0)" ( (binary_expression "shndx != 0" identifier != number_literal) )) (compound_statement "{\n        operator_delete((void *)shndx);\n      }" { (expression_statement "operator_delete((void *)shndx);" (call_expression "operator_delete((void *)shndx)" identifier (argument_list "((void *)shndx)" ( (cast_expression "(void *)shndx" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) })) (if_statement "if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) (if_statement "if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (Output_segment_headers *)0x0;\n        goto LAB_00087db2;\n      }" if (parenthesized_expression "(*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0')" ( (binary_expression "*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0'" (pointer_expression "*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d)" * (cast_expression "(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) + 0x318d)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) + 0x318d" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        local_8c = (Output_segment_headers *)0x0;\n        goto LAB_00087db2;\n      }" { (expression_statement "local_8c = (Output_segment_headers *)0x0;" (assignment_expression "local_8c = (Output_segment_headers *)0x0" identifier = (cast_expression "(Output_segment_headers *)0x0" ( (type_descriptor "Output_segment_headers *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00087db2;" goto statement_identifier ;) })) }) (else_clause "else {\n      local_90 = (Output_segment *)0x0;\n    }" else (compound_statement "{\n      local_90 = (Output_segment *)0x0;\n    }" { (expression_statement "local_90 = (Output_segment *)0x0;" (assignment_expression "local_90 = (Output_segment *)0x0" identifier = (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "local_8c = (Output_segment_headers *)operator_new(0x24);" (assignment_expression "local_8c = (Output_segment_headers *)operator_new(0x24)" identifier = (cast_expression "(Output_segment_headers *)operator_new(0x24)" ( (type_descriptor "Output_segment_headers *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x24)" identifier (argument_list "(0x24)" ( number_literal ))))) ;) comment (labeled_statement "Output_segment_headers::Output_segment_headers(local_8c,&this->segment_list_);" statement_identifier : (ERROR ":" :) (expression_statement "Output_segment_headers(local_8c,&this->segment_list_);" (call_expression "Output_segment_headers(local_8c,&this->segment_list_)" identifier (argument_list "(local_8c,&this->segment_list_)" ( identifier , (pointer_expression "&this->segment_list_" & (field_expression "this->segment_list_" identifier -> field_identifier)) ))) ;)) }) (else_clause "else {\n    local_90 = (Output_segment *)0x0;\n    local_8c = (Output_segment_headers *)0x0;\n  }" else (compound_statement "{\n    local_90 = (Output_segment *)0x0;\n    local_8c = (Output_segment_headers *)0x0;\n  }" { (expression_statement "local_90 = (Output_segment *)0x0;" (assignment_expression "local_90 = (Output_segment *)0x0" identifier = (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_8c = (Output_segment_headers *)0x0;" (assignment_expression "local_8c = (Output_segment_headers *)0x0" identifier = (cast_expression "(Output_segment_headers *)0x0" ( (type_descriptor "Output_segment_headers *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_00087db2:\n  local_94 = (Output_file_header *)operator_new(0x34);" statement_identifier : (expression_statement "local_94 = (Output_file_header *)operator_new(0x34);" (assignment_expression "local_94 = (Output_file_header *)operator_new(0x34)" identifier = (cast_expression "(Output_file_header *)operator_new(0x34)" ( (type_descriptor "Output_file_header *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x34)" identifier (argument_list "(0x34)" ( number_literal ))))) ;)) comment (labeled_statement "Output_file_header::Output_file_header(local_94,target,symtab,local_8c);" statement_identifier : (ERROR ":" :) (expression_statement "Output_file_header(local_94,target,symtab,local_8c);" (call_expression "Output_file_header(local_94,target,symtab,local_8c)" identifier (argument_list "(local_94,target,symtab,local_8c)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "off = CONCAT44(off._4_4_,local_94);" (assignment_expression "off = CONCAT44(off._4_4_,local_94)" identifier = (call_expression "CONCAT44(off._4_4_,local_94)" identifier (argument_list "(off._4_4_,local_94)" ( (field_expression "off._4_4_" identifier . field_identifier) , identifier )))) ;) (expression_statement "local_b0 = (Output_data **)&off;" (assignment_expression "local_b0 = (Output_data **)&off" identifier = (cast_expression "(Output_data **)&off" ( (type_descriptor "Output_data **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&off" & identifier))) ;) (ERROR "std::vector<gold::Output_data*,_std::allocator<gold::Output_data*>_>::\n  emplace_back<gold::" (comma_expression "std::vector<gold::Output_data*,_std" identifier (ERROR "::vector<gold::Output_data*" : : (binary_expression "vector<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Output_data*>_>::\n  emplace_back<gold" (binary_expression "Output_data*>_>::\n  emplace_back" (binary_expression "Output_data*>_" identifier * (ERROR ">" >) identifier) > (ERROR "::" : :) identifier) < identifier) : :) (expression_statement "Output_data*>(&this->special_output_list_,local_b0);" (binary_expression "Output_data*>(&this->special_output_list_,local_b0)" (binary_expression "Output_data*" identifier * identifier) > (parenthesized_expression "(&this->special_output_list_,local_b0)" ( (comma_expression "&this->special_output_list_,local_b0" (pointer_expression "&this->special_output_list_" & (field_expression "this->special_output_list_" identifier -> field_identifier)) , identifier) ))) ;) (if_statement "if (local_8c != (Output_segment_headers *)0x0) {\n    off = CONCAT44(off._4_4_,local_8c);\n    std::vector<gold::Output_data*,_std::allocator<gold::Output_data*>_>::\n    emplace_back<gold::Output_data*>(&this->special_output_list_,local_b0);\n  }" if (parenthesized_expression "(local_8c != (Output_segment_headers *)0x0)" ( (binary_expression "local_8c != (Output_segment_headers *)0x0" identifier != (cast_expression "(Output_segment_headers *)0x0" ( (type_descriptor "Output_segment_headers *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    off = CONCAT44(off._4_4_,local_8c);\n    std::vector<gold::Output_data*,_std::allocator<gold::Output_data*>_>::\n    emplace_back<gold::Output_data*>(&this->special_output_list_,local_b0);\n  }" { (expression_statement "off = CONCAT44(off._4_4_,local_8c);" (assignment_expression "off = CONCAT44(off._4_4_,local_8c)" identifier = (call_expression "CONCAT44(off._4_4_,local_8c)" identifier (argument_list "(off._4_4_,local_8c)" ( (field_expression "off._4_4_" identifier . field_identifier) , identifier )))) ;) (ERROR "std::vector<gold::Output_data*,_std::allocator<gold::Output_data*>_>::\n    emplace_back<gold::" (comma_expression "std::vector<gold::Output_data*,_std" identifier (ERROR "::vector<gold::Output_data*" : : (binary_expression "vector<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Output_data*>_>::\n    emplace_back<gold" (binary_expression "Output_data*>_>::\n    emplace_back" (binary_expression "Output_data*>_" identifier * (ERROR ">" >) identifier) > (ERROR "::" : :) identifier) < identifier) : :) (expression_statement "Output_data*>(&this->special_output_list_,local_b0);" (binary_expression "Output_data*>(&this->special_output_list_,local_b0)" (binary_expression "Output_data*" identifier * identifier) > (parenthesized_expression "(&this->special_output_list_,local_b0)" ( (comma_expression "&this->special_output_list_,local_b0" (pointer_expression "&this->special_output_list_" & (field_expression "this->special_output_list_" identifier -> field_identifier)) , identifier) ))) ;) })) (if_statement "if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    iVar23 = *(int *)pbVar1;\n    iVar15 = *(int *)(iVar23 + 8);\n    if (iVar15 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    pcVar14 = *(code **)(*(int *)target + 0x68);\n    if (pcVar14 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n    }\nLAB_00088af4:\n    cVar9 = (*pcVar14)(target);\nLAB_00087e60:\n    if (cVar9 == '\0') goto LAB_00087e72;\n  }\n  else {\n    place_orphan_sections_in_script(this);\n    iVar23 = *(int *)pbVar1;\n    iVar15 = *(int *)(iVar23 + 8);\n    if (iVar15 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar23 + 0x14) & 8) == 0) {\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar9 = *(char *)(iVar15 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }" if (parenthesized_expression "((this->script_options_->script_sections_).saw_sections_clause_ == false)" ( (binary_expression "(this->script_options_->script_sections_).saw_sections_clause_ == false" (field_expression "(this->script_options_->script_sections_).saw_sections_clause_" (parenthesized_expression "(this->script_options_->script_sections_)" ( (field_expression "this->script_options_->script_sections_" (field_expression "this->script_options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n    iVar23 = *(int *)pbVar1;\n    iVar15 = *(int *)(iVar23 + 8);\n    if (iVar15 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    pcVar14 = *(code **)(*(int *)target + 0x68);\n    if (pcVar14 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n    }\nLAB_00088af4:\n    cVar9 = (*pcVar14)(target);\nLAB_00087e60:\n    if (cVar9 == '\0') goto LAB_00087e72;\n  }" { (expression_statement "iVar23 = *(int *)pbVar1;" (assignment_expression "iVar23 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar15 = *(int *)(iVar23 + 8);" (assignment_expression "iVar15 = *(int *)(iVar23 + 8)" identifier = (pointer_expression "*(int *)(iVar23 + 8)" * (cast_expression "(int *)(iVar23 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 8)" ( (binary_expression "iVar23 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar15 != 0) goto LAB_00087e3a;" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00087e3a;" goto statement_identifier ;)) (labeled_statement "LAB_00088adb:\n    pcVar14 = *(code **)(*(int *)target + 0x68);" statement_identifier : (expression_statement "pcVar14 = *(code **)(*(int *)target + 0x68);" (assignment_expression "pcVar14 = *(code **)(*(int *)target + 0x68)" identifier = (pointer_expression "*(code **)(*(int *)target + 0x68)" * (cast_expression "(code **)(*(int *)target + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)target + 0x68)" ( (binary_expression "*(int *)target + 0x68" (pointer_expression "*(int *)target" * (cast_expression "(int *)target" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;)) (if_statement "if (pcVar14 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n    }" if (parenthesized_expression "(pcVar14 == (code *)(unaff_EDI + 0x1497))" ( (binary_expression "pcVar14 == (code *)(unaff_EDI + 0x1497)" identifier == (cast_expression "(code *)(unaff_EDI + 0x1497)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1497)" ( (binary_expression "unaff_EDI + 0x1497" identifier + number_literal) )))) )) (compound_statement "{\nLAB_00088477:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));\n    }" { (labeled_statement "LAB_00088477:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));" statement_identifier : comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f))" identifier (argument_list "((char *)(unaff_EDI + 0x198c47),0x5c,(char *)(unaff_EDI + 0x19c67f))" ( (cast_expression "(char *)(unaff_EDI + 0x198c47)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x198c47)" ( (binary_expression "unaff_EDI + 0x198c47" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x19c67f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x19c67f)" ( (binary_expression "unaff_EDI + 0x19c67f" identifier + number_literal) ))) ))) ;)) })) (labeled_statement "LAB_00088af4:\n    cVar9 = (*pcVar14)(target);" statement_identifier : (expression_statement "cVar9 = (*pcVar14)(target);" (assignment_expression "cVar9 = (*pcVar14)(target)" identifier = (call_expression "(*pcVar14)(target)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(target)" ( identifier )))) ;)) (labeled_statement "LAB_00087e60:\n    if (cVar9 == '\0') goto LAB_00087e72;" statement_identifier : (if_statement "if (cVar9 == '\0') goto LAB_00087e72;" if (parenthesized_expression "(cVar9 == '\0')" ( (binary_expression "cVar9 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00087e72;" goto statement_identifier ;))) }) (else_clause "else {\n    place_orphan_sections_in_script(this);\n    iVar23 = *(int *)pbVar1;\n    iVar15 = *(int *)(iVar23 + 8);\n    if (iVar15 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar23 + 0x14) & 8) == 0) {\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar9 = *(char *)(iVar15 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }" else (compound_statement "{\n    place_orphan_sections_in_script(this);\n    iVar23 = *(int *)pbVar1;\n    iVar15 = *(int *)(iVar23 + 8);\n    if (iVar15 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar23 + 0x14) & 8) == 0) {\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar9 = *(char *)(iVar15 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }" { (expression_statement "place_orphan_sections_in_script(this);" (call_expression "place_orphan_sections_in_script(this)" identifier (argument_list "(this)" ( identifier ))) ;) (expression_statement "iVar23 = *(int *)pbVar1;" (assignment_expression "iVar23 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar15 = *(int *)(iVar23 + 8);" (assignment_expression "iVar15 = *(int *)(iVar23 + 8)" identifier = (pointer_expression "*(int *)(iVar23 + 8)" * (cast_expression "(int *)(iVar23 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 8)" ( (binary_expression "iVar23 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar15 == 0) goto LAB_00088adb;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00088adb;" goto statement_identifier ;)) (labeled_statement "LAB_00087e3a:\n    if ((*(byte *)(iVar23 + 0x14) & 8) == 0) {\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar9 = *(char *)(iVar15 + 0x3209);\n      goto LAB_00087e60;\n    }" statement_identifier : (if_statement "if ((*(byte *)(iVar23 + 0x14) & 8) == 0) {\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar9 = *(char *)(iVar15 + 0x3209);\n      goto LAB_00087e60;\n    }" if (parenthesized_expression "((*(byte *)(iVar23 + 0x14) & 8) == 0)" ( (binary_expression "(*(byte *)(iVar23 + 0x14) & 8) == 0" (parenthesized_expression "(*(byte *)(iVar23 + 0x14) & 8)" ( (binary_expression "*(byte *)(iVar23 + 0x14) & 8" (pointer_expression "*(byte *)(iVar23 + 0x14)" * (cast_expression "(byte *)(iVar23 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x14)" ( (binary_expression "iVar23 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar9 = *(char *)(iVar15 + 0x3209);\n      goto LAB_00087e60;\n    }" { (expression_statement "pcVar14 = *(code **)(*(int *)target + 0x68);" (assignment_expression "pcVar14 = *(code **)(*(int *)target + 0x68)" identifier = (pointer_expression "*(code **)(*(int *)target + 0x68)" * (cast_expression "(code **)(*(int *)target + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)target + 0x68)" ( (binary_expression "*(int *)target + 0x68" (pointer_expression "*(int *)target" * (cast_expression "(int *)target" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;" if (parenthesized_expression "(pcVar14 != (code *)(unaff_EDI + 0x1497))" ( (binary_expression "pcVar14 != (code *)(unaff_EDI + 0x1497)" identifier != (cast_expression "(code *)(unaff_EDI + 0x1497)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1497)" ( (binary_expression "unaff_EDI + 0x1497" identifier + number_literal) )))) )) (goto_statement "goto LAB_00088af4;" goto statement_identifier ;)) (expression_statement "cVar9 = *(char *)(iVar15 + 0x3209);" (assignment_expression "cVar9 = *(char *)(iVar15 + 0x3209)" identifier = (pointer_expression "*(char *)(iVar15 + 0x3209)" * (cast_expression "(char *)(iVar15 + 0x3209)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x3209)" ( (binary_expression "iVar15 + 0x3209" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00087e60;" goto statement_identifier ;) }))) }))) (expression_statement "prepare_for_relaxation(this);" (call_expression "prepare_for_relaxation(this)" identifier (argument_list "(this)" ( identifier ))) ;) (labeled_statement "LAB_00087e72:\n  local_88 = 0;" statement_identifier : (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00087e80:\n  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    this_00 = *(General_options **)(*(int *)pbVar1 + 8);\n    if (this_00 == (General_options *)0x0) goto LAB_00088477;\n    local_80 = (Output_segment *)0x0;\n    if ((this_00->relocatable_).value == false) {\n      local_80 = find_first_load_seg(this,target);\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = set_section_addresses_from_script(this,symtab);\nLAB_00088944:\n    this_00 = *(General_options **)(*(int *)pbVar1 + 8);\n    if (this_00 == (General_options *)0x0) goto LAB_00088477;\n  }" statement_identifier : (if_statement "if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    this_00 = *(General_options **)(*(int *)pbVar1 + 8);\n    if (this_00 == (General_options *)0x0) goto LAB_00088477;\n    local_80 = (Output_segment *)0x0;\n    if ((this_00->relocatable_).value == false) {\n      local_80 = find_first_load_seg(this,target);\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = set_section_addresses_from_script(this,symtab);\nLAB_00088944:\n    this_00 = *(General_options **)(*(int *)pbVar1 + 8);\n    if (this_00 == (General_options *)0x0) goto LAB_00088477;\n  }" if (parenthesized_expression "((this->script_options_->script_sections_).saw_sections_clause_ == false)" ( (binary_expression "(this->script_options_->script_sections_).saw_sections_clause_ == false" (field_expression "(this->script_options_->script_sections_).saw_sections_clause_" (parenthesized_expression "(this->script_options_->script_sections_)" ( (field_expression "this->script_options_->script_sections_" (field_expression "this->script_options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n    this_00 = *(General_options **)(*(int *)pbVar1 + 8);\n    if (this_00 == (General_options *)0x0) goto LAB_00088477;\n    local_80 = (Output_segment *)0x0;\n    if ((this_00->relocatable_).value == false) {\n      local_80 = find_first_load_seg(this,target);\n      goto LAB_00088944;\n    }\n  }" { (expression_statement "this_00 = *(General_options **)(*(int *)pbVar1 + 8);" (assignment_expression "this_00 = *(General_options **)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(General_options **)(*(int *)pbVar1 + 8)" * (cast_expression "(General_options **)(*(int *)pbVar1 + 8)" ( (type_descriptor "General_options **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (this_00 == (General_options *)0x0) goto LAB_00088477;" if (parenthesized_expression "(this_00 == (General_options *)0x0)" ( (binary_expression "this_00 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) (expression_statement "local_80 = (Output_segment *)0x0;" (assignment_expression "local_80 = (Output_segment *)0x0" identifier = (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((this_00->relocatable_).value == false) {\n      local_80 = find_first_load_seg(this,target);\n      goto LAB_00088944;\n    }" if (parenthesized_expression "((this_00->relocatable_).value == false)" ( (binary_expression "(this_00->relocatable_).value == false" (field_expression "(this_00->relocatable_).value" (parenthesized_expression "(this_00->relocatable_)" ( (field_expression "this_00->relocatable_" identifier -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n      local_80 = find_first_load_seg(this,target);\n      goto LAB_00088944;\n    }" { (expression_statement "local_80 = find_first_load_seg(this,target);" (assignment_expression "local_80 = find_first_load_seg(this,target)" identifier = (call_expression "find_first_load_seg(this,target)" identifier (argument_list "(this,target)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00088944;" goto statement_identifier ;) })) }) (else_clause "else {\n    local_80 = set_section_addresses_from_script(this,symtab);\nLAB_00088944:\n    this_00 = *(General_options **)(*(int *)pbVar1 + 8);\n    if (this_00 == (General_options *)0x0) goto LAB_00088477;\n  }" else (compound_statement "{\n    local_80 = set_section_addresses_from_script(this,symtab);\nLAB_00088944:\n    this_00 = *(General_options **)(*(int *)pbVar1 + 8);\n    if (this_00 == (General_options *)0x0) goto LAB_00088477;\n  }" { (expression_statement "local_80 = set_section_addresses_from_script(this,symtab);" (assignment_expression "local_80 = set_section_addresses_from_script(this,symtab)" identifier = (call_expression "set_section_addresses_from_script(this,symtab)" identifier (argument_list "(this,symtab)" ( identifier , identifier )))) ;) (labeled_statement "LAB_00088944:\n    this_00 = *(General_options **)(*(int *)pbVar1 + 8);" statement_identifier : (expression_statement "this_00 = *(General_options **)(*(int *)pbVar1 + 8);" (assignment_expression "this_00 = *(General_options **)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(General_options **)(*(int *)pbVar1 + 8)" * (cast_expression "(General_options **)(*(int *)pbVar1 + 8)" ( (type_descriptor "General_options **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;)) (if_statement "if (this_00 == (General_options *)0x0) goto LAB_00088477;" if (parenthesized_expression "(this_00 == (General_options *)0x0)" ( (binary_expression "this_00 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) })))) (ERROR "OVar10 = General_options::" (assignment_expression "OVar10 = General_options" identifier = identifier) : :) (expression_statement "oformat_enum(this_00);" (call_expression "oformat_enum(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;) (expression_statement "this_01 = (Output_segment *)0x0;" (assignment_expression "this_01 = (Output_segment *)0x0" identifier = (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (OVar10 == OBJECT_FORMAT_ELF) {\n    this_01 = local_80;\n  }" if (parenthesized_expression "(OVar10 == OBJECT_FORMAT_ELF)" ( (binary_expression "OVar10 == OBJECT_FORMAT_ELF" identifier == identifier) )) (compound_statement "{\n    this_01 = local_80;\n  }" { (expression_statement "this_01 = local_80;" (assignment_expression "this_01 = local_80" identifier = identifier) ;) })) (expression_statement "iVar23 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar23 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (iVar23 != 0) {\n    iVar15 = *(int *)(target + 4);\n    if (*(char *)(iVar15 + 0x30) == '\0') {\n      if (*(char *)(iVar23 + 0x41b8) != '\0') {\n        local_9c = *(undefined8 *)(iVar23 + 0x5218);\n        if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n          local_9c = *(undefined8 *)(iVar15 + 0x20);\n        }\n        lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x41bc),*(undefined4 *)(iVar23 + 0x41c0),\n                           (int)local_9c,local_9c._4_4_);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar23 + 0x423c) != '\0') {\n      local_9c = *(undefined8 *)(iVar23 + 0x5218);\n      if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n        local_9c = *(undefined8 *)(iVar15 + 0x20);\n      }\n      lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x4240),*(undefined4 *)(iVar23 + 0x4244),\n                         (int)local_9c,local_9c._4_4_);\njoined_r0x0008887a:\n      if (lVar25 != 0) {\n        cVar9 = *(char *)(iVar23 + 0x318d);\n        pOVar17 = (Output_segment *)0x0;\n        goto LAB_00087f2e;\n      }\n    }\n    pOVar17 = local_90;\n    if ((local_90 != (Output_segment *)0x0) && (this_01 == (Output_segment *)0x0)) {\n      if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xaef,(char *)(unaff_EDI + 0x19c44f));\n      }\n      cVar9 = *(char *)(iVar23 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar9 = *(char *)(iVar23 + 0x318d);\n    if (this_01 == (Output_segment *)0x0) goto LAB_00087f2e;\n    local_80 = this_01;\n    if (((this_01->field_0x19c & 2) == 0) ||\n       ((this->script_options_->script_sections_).saw_sections_clause_ != false)) {\n      if (cVar9 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar9 != '\0') goto LAB_000887ba;\n    if ((((local_94->super_Output_data).field_0x1c & 2) == 0) &&\n       ((*(local_94->super_Output_data)._vptr_Output_data[0xe])(local_94),\n       ((local_94->super_Output_data).field_0x1c & 2) == 0)) {\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0x163,(char *)(unaff_EDI + 0x19c43b));\n    }\n    if (((local_8c->super_Output_data).field_0x1c & 2) == 0) {\n      (*(local_8c->super_Output_data)._vptr_Output_data[0xe])(local_8c);\n      if (((local_8c->super_Output_data).field_0x1c & 2) == 0) goto LAB_00088c5f;\n      if (((local_94->super_Output_data).field_0x1c & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0xcf,(char *)(unaff_EDI + 0x19c68f));\n      }\n    }\n    uVar22 = (int)(local_94->super_Output_data).data_size_ +\n             (int)(local_8c->super_Output_data).data_size_;\n    iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar23 == 0) {\n                    /* WARNING: Subroutine does not return */\n      Target::abi_pagesize((Target *)in_stack_ffffff34);\n    }\n    local_a0 = *(int *)(iVar23 + 0x521c);\n    local_a4 = *(int *)(iVar23 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(*(int *)(target + 4) + 0x24);\n      local_a4 = *(int *)(*(int *)(target + 4) + 0x20);\n    }\n    uVar5 = (uint)this_01->paddr_;\n    uVar6 = *(uint *)((int)&this_01->paddr_ + 4);\n    uVar20 = uVar5 - uVar22 & -local_a4;\n    uVar21 = uVar6 - (uVar5 < uVar22) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar13 = uVar5 - uVar20;\n    uVar16 = (uVar6 - uVar21) - (uint)(uVar5 < uVar20);\n    cVar9 = *(char *)(iVar23 + 0x318d);\n    if (uVar16 <= uVar6 && (uint)(uVar5 < uVar13) <= uVar6 - uVar16) {\n      uVar7 = *(uint *)((int)&this_01->vaddr_ + 4);\n      uVar8 = (uint)this_01->vaddr_;\n      if (uVar16 <= uVar7 && (uint)(uVar8 < uVar13) <= uVar7 - uVar16) {\n        *(uint *)&this_01->paddr_ = uVar20;\n        *(uint *)&this_01->vaddr_ = (uVar8 - uVar5) + uVar20;\n        *(uint *)((int)&this_01->vaddr_ + 4) =\n             ((uVar7 - uVar6) - (uint)(uVar8 < uVar5)) + uVar21 + (uint)CARRY4(uVar8 - uVar5,uVar20)\n        ;\n        this_01->field_0x19c = this_01->field_0x19c | 2;\n        *(uint *)((int)&this_01->paddr_ + 4) = uVar21;\n        iVar23 = uVar16 - (uVar13 < uVar22);\n        if (cVar9 != '\0') goto LAB_000887ba;\n        if (uVar13 - uVar22 == 0 && iVar23 == 0) goto LAB_0008878f;\n        if (this_01 == (Output_segment *)0x0) goto LAB_0008878f;\n        od = (Output_data *)operator_new(0x2c);\n        *(undefined4 *)&od->address_ = 0;\n        *(uint *)&od->data_size_ = uVar13 - uVar22;\n        bVar2 = od->field_0x1c;\n        *(undefined4 *)((int)&od->address_ + 4) = 0;\n        od[1]._vptr_Output_data = (_func_int_varargs **)0x0;\n        *(undefined4 *)&od[1].address_ = 1;\n        od->field_0x1c = bVar2 & 0xe0 | 10;\n        *(undefined4 *)((int)&od[1].address_ + 4) = 0;\n        *(int *)((int)&od->data_size_ + 4) = iVar23;\n        *(undefined4 *)&od->offset_ = 0xffffffff;\n        *(undefined4 *)((int)&od->offset_ + 4) = 0xffffffff;\n        od->_vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2759db);\n        Output_segment::add_initial_output_data(this_01,od);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar9 != '\0') goto LAB_00087f7a;\n    local_80 = (Output_segment *)0x0;\nLAB_00087f52:\n    if (pOVar17 != (Output_segment *)0x0) goto LAB_00087f5a;\n    pSVar12 = this->script_options_;\n    if ((pSVar12->script_sections_).saw_sections_clause_ != false) goto LAB_00087f99;\nLAB_00087fc3:\n    iVar15 = local_88;\n    shndx = 1;\n    if (*(char *)(iVar23 + 0x318d) == '\0') {\n      oVar24 = set_segment_offsets(this,target,local_80,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          Relaxation_debug_check::read_sections(this->relaxation_debug_check_,&this->section_list_);\n        }\n        else {\n          Relaxation_debug_check::verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);\n        }\n        iVar23 = *(int *)pbVar1;\n        iVar18 = *(int *)(iVar23 + 8);\n        if (iVar18 == 0) goto LAB_000888c2;\n      }\n      off = oVar24;\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar18 + 0x3209) != '\0') &&\n         (pcVar14 = *(code **)(*(int *)target + 0x6c), pcVar14 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      oVar24 = set_relocatable_section_offsets(this,&local_94->super_Output_data,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      off = oVar24;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      cVar9 = (*pcVar14)(target);\n      if (cVar9 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar14 = *(code **)(*(int *)target + 0x6c);\n          if (pcVar14 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar9 = local_88 < 2;\n        }\n        local_88 = iVar15 + 1;\n        if (cVar9 != '\0') {\n          clean_up_after_relaxation(this);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar15 + 1;\n    this_02 = Symbol_table::lookup(symtab,(char *)(unaff_EDI + 0x19b53f),(char *)0x0);\n    if ((this_02 != (Symbol *)0x0) && ((this_02->field_0x2c & 4) != 0)) {\n      if (local_80 == (Output_segment *)0x0) {\n        Symbol::set_undefined(this_02);\n      }\n      else {\n        Symbol::set_output_segment(this_02,local_80,SEGMENT_START);\n      }\n    }\n    off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);\n    ppOVar19 = (this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_start;\n    uVar22 = shndx;\n    if ((this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish != ppOVar19) {\n      do {\n        while (pOVar11 = *ppOVar19, pOVar11->out_shndx_ == 0xffffffff) {\n          p_Var3 = (pOVar11->super_Output_data)._vptr_Output_data[0xc];\n          if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n            pOVar11->out_shndx_ = uVar22;\n          }\n          else {\n            (*p_Var3)(pOVar11,uVar22);\n          }\n          uVar22 = uVar22 + 1;\n          ppOVar19 = ppOVar19 + 1;\n          if ((this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish == ppOVar19) goto LAB_00088157;\n        }\n        ppOVar19 = ppOVar19 + 1;\n      } while ((this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish != ppOVar19);\n    }\nLAB_00088157:\n    shndx = uVar22;\n    create_symtab_sections(this,input_objects,symtab,uVar22,(off_t *)local_b0,local_dynamic_count);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        assign_local_dynsym_offsets(this,input_objects);\n      }\n      Script_options::finalize_symbols(this->script_options_,symtab,this);\n      if (this->incremental_inputs_ != (Incremental_inputs *)0x0) {\n        Incremental_inputs::finalize(this->incremental_inputs_);\n        create_incremental_info_sections(this,symtab);\n      }\n      pOVar11 = create_shstrtab(this);\n      off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);\n      ppOVar19 = (this->unattached_section_list_).\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                 _M_impl._M_start;\n      uVar22 = shndx;\n      if (ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar9 = Parameters::doing_static_link(in_stack_ffffff34,in_stack_ffffff38);\n    iVar23 = extraout_ECX;\n    pOVar17 = local_90;\nLAB_00087f2e:\n    if (cVar9 == '\0') {\n      local_80 = (Output_segment *)0x0;\nLAB_00087f39:\n      if (local_8c == (Output_segment_headers *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f));\n      }\n      if (local_80 == (Output_segment *)0x0) goto LAB_00087f52;\nLAB_0008878f:\n      Output_segment::add_initial_output_data(local_80,&local_8c->super_Output_data);\n      if (pOVar17 != (Output_segment *)0x0) {\nLAB_00087f5a:\n        Output_segment::add_initial_output_data(pOVar17,&local_8c->super_Output_data);\n        if (local_80 == (Output_segment *)0x0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      Output_segment::add_initial_output_data(local_80,&local_94->super_Output_data);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = (Output_segment *)0x0;\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    pSVar12 = this->script_options_;\n    if ((pSVar12->script_sections_).saw_sections_clause_ == false) goto LAB_00088468;\nLAB_00087f99:\n    if ((pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0) goto LAB_00088468;\n    if (iVar23 != 0) goto code_r0x00087faf;\n  }" if (parenthesized_expression "(iVar23 != 0)" ( (binary_expression "iVar23 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar15 = *(int *)(target + 4);\n    if (*(char *)(iVar15 + 0x30) == '\0') {\n      if (*(char *)(iVar23 + 0x41b8) != '\0') {\n        local_9c = *(undefined8 *)(iVar23 + 0x5218);\n        if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n          local_9c = *(undefined8 *)(iVar15 + 0x20);\n        }\n        lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x41bc),*(undefined4 *)(iVar23 + 0x41c0),\n                           (int)local_9c,local_9c._4_4_);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar23 + 0x423c) != '\0') {\n      local_9c = *(undefined8 *)(iVar23 + 0x5218);\n      if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n        local_9c = *(undefined8 *)(iVar15 + 0x20);\n      }\n      lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x4240),*(undefined4 *)(iVar23 + 0x4244),\n                         (int)local_9c,local_9c._4_4_);\njoined_r0x0008887a:\n      if (lVar25 != 0) {\n        cVar9 = *(char *)(iVar23 + 0x318d);\n        pOVar17 = (Output_segment *)0x0;\n        goto LAB_00087f2e;\n      }\n    }\n    pOVar17 = local_90;\n    if ((local_90 != (Output_segment *)0x0) && (this_01 == (Output_segment *)0x0)) {\n      if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xaef,(char *)(unaff_EDI + 0x19c44f));\n      }\n      cVar9 = *(char *)(iVar23 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar9 = *(char *)(iVar23 + 0x318d);\n    if (this_01 == (Output_segment *)0x0) goto LAB_00087f2e;\n    local_80 = this_01;\n    if (((this_01->field_0x19c & 2) == 0) ||\n       ((this->script_options_->script_sections_).saw_sections_clause_ != false)) {\n      if (cVar9 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar9 != '\0') goto LAB_000887ba;\n    if ((((local_94->super_Output_data).field_0x1c & 2) == 0) &&\n       ((*(local_94->super_Output_data)._vptr_Output_data[0xe])(local_94),\n       ((local_94->super_Output_data).field_0x1c & 2) == 0)) {\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0x163,(char *)(unaff_EDI + 0x19c43b));\n    }\n    if (((local_8c->super_Output_data).field_0x1c & 2) == 0) {\n      (*(local_8c->super_Output_data)._vptr_Output_data[0xe])(local_8c);\n      if (((local_8c->super_Output_data).field_0x1c & 2) == 0) goto LAB_00088c5f;\n      if (((local_94->super_Output_data).field_0x1c & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0xcf,(char *)(unaff_EDI + 0x19c68f));\n      }\n    }\n    uVar22 = (int)(local_94->super_Output_data).data_size_ +\n             (int)(local_8c->super_Output_data).data_size_;\n    iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar23 == 0) {\n                    /* WARNING: Subroutine does not return */\n      Target::abi_pagesize((Target *)in_stack_ffffff34);\n    }\n    local_a0 = *(int *)(iVar23 + 0x521c);\n    local_a4 = *(int *)(iVar23 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(*(int *)(target + 4) + 0x24);\n      local_a4 = *(int *)(*(int *)(target + 4) + 0x20);\n    }\n    uVar5 = (uint)this_01->paddr_;\n    uVar6 = *(uint *)((int)&this_01->paddr_ + 4);\n    uVar20 = uVar5 - uVar22 & -local_a4;\n    uVar21 = uVar6 - (uVar5 < uVar22) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar13 = uVar5 - uVar20;\n    uVar16 = (uVar6 - uVar21) - (uint)(uVar5 < uVar20);\n    cVar9 = *(char *)(iVar23 + 0x318d);\n    if (uVar16 <= uVar6 && (uint)(uVar5 < uVar13) <= uVar6 - uVar16) {\n      uVar7 = *(uint *)((int)&this_01->vaddr_ + 4);\n      uVar8 = (uint)this_01->vaddr_;\n      if (uVar16 <= uVar7 && (uint)(uVar8 < uVar13) <= uVar7 - uVar16) {\n        *(uint *)&this_01->paddr_ = uVar20;\n        *(uint *)&this_01->vaddr_ = (uVar8 - uVar5) + uVar20;\n        *(uint *)((int)&this_01->vaddr_ + 4) =\n             ((uVar7 - uVar6) - (uint)(uVar8 < uVar5)) + uVar21 + (uint)CARRY4(uVar8 - uVar5,uVar20)\n        ;\n        this_01->field_0x19c = this_01->field_0x19c | 2;\n        *(uint *)((int)&this_01->paddr_ + 4) = uVar21;\n        iVar23 = uVar16 - (uVar13 < uVar22);\n        if (cVar9 != '\0') goto LAB_000887ba;\n        if (uVar13 - uVar22 == 0 && iVar23 == 0) goto LAB_0008878f;\n        if (this_01 == (Output_segment *)0x0) goto LAB_0008878f;\n        od = (Output_data *)operator_new(0x2c);\n        *(undefined4 *)&od->address_ = 0;\n        *(uint *)&od->data_size_ = uVar13 - uVar22;\n        bVar2 = od->field_0x1c;\n        *(undefined4 *)((int)&od->address_ + 4) = 0;\n        od[1]._vptr_Output_data = (_func_int_varargs **)0x0;\n        *(undefined4 *)&od[1].address_ = 1;\n        od->field_0x1c = bVar2 & 0xe0 | 10;\n        *(undefined4 *)((int)&od[1].address_ + 4) = 0;\n        *(int *)((int)&od->data_size_ + 4) = iVar23;\n        *(undefined4 *)&od->offset_ = 0xffffffff;\n        *(undefined4 *)((int)&od->offset_ + 4) = 0xffffffff;\n        od->_vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2759db);\n        Output_segment::add_initial_output_data(this_01,od);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar9 != '\0') goto LAB_00087f7a;\n    local_80 = (Output_segment *)0x0;\nLAB_00087f52:\n    if (pOVar17 != (Output_segment *)0x0) goto LAB_00087f5a;\n    pSVar12 = this->script_options_;\n    if ((pSVar12->script_sections_).saw_sections_clause_ != false) goto LAB_00087f99;\nLAB_00087fc3:\n    iVar15 = local_88;\n    shndx = 1;\n    if (*(char *)(iVar23 + 0x318d) == '\0') {\n      oVar24 = set_segment_offsets(this,target,local_80,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          Relaxation_debug_check::read_sections(this->relaxation_debug_check_,&this->section_list_);\n        }\n        else {\n          Relaxation_debug_check::verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);\n        }\n        iVar23 = *(int *)pbVar1;\n        iVar18 = *(int *)(iVar23 + 8);\n        if (iVar18 == 0) goto LAB_000888c2;\n      }\n      off = oVar24;\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar18 + 0x3209) != '\0') &&\n         (pcVar14 = *(code **)(*(int *)target + 0x6c), pcVar14 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      oVar24 = set_relocatable_section_offsets(this,&local_94->super_Output_data,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      off = oVar24;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      cVar9 = (*pcVar14)(target);\n      if (cVar9 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar14 = *(code **)(*(int *)target + 0x6c);\n          if (pcVar14 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar9 = local_88 < 2;\n        }\n        local_88 = iVar15 + 1;\n        if (cVar9 != '\0') {\n          clean_up_after_relaxation(this);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar15 + 1;\n    this_02 = Symbol_table::lookup(symtab,(char *)(unaff_EDI + 0x19b53f),(char *)0x0);\n    if ((this_02 != (Symbol *)0x0) && ((this_02->field_0x2c & 4) != 0)) {\n      if (local_80 == (Output_segment *)0x0) {\n        Symbol::set_undefined(this_02);\n      }\n      else {\n        Symbol::set_output_segment(this_02,local_80,SEGMENT_START);\n      }\n    }\n    off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);\n    ppOVar19 = (this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_start;\n    uVar22 = shndx;\n    if ((this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish != ppOVar19) {\n      do {\n        while (pOVar11 = *ppOVar19, pOVar11->out_shndx_ == 0xffffffff) {\n          p_Var3 = (pOVar11->super_Output_data)._vptr_Output_data[0xc];\n          if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n            pOVar11->out_shndx_ = uVar22;\n          }\n          else {\n            (*p_Var3)(pOVar11,uVar22);\n          }\n          uVar22 = uVar22 + 1;\n          ppOVar19 = ppOVar19 + 1;\n          if ((this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish == ppOVar19) goto LAB_00088157;\n        }\n        ppOVar19 = ppOVar19 + 1;\n      } while ((this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish != ppOVar19);\n    }\nLAB_00088157:\n    shndx = uVar22;\n    create_symtab_sections(this,input_objects,symtab,uVar22,(off_t *)local_b0,local_dynamic_count);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        assign_local_dynsym_offsets(this,input_objects);\n      }\n      Script_options::finalize_symbols(this->script_options_,symtab,this);\n      if (this->incremental_inputs_ != (Incremental_inputs *)0x0) {\n        Incremental_inputs::finalize(this->incremental_inputs_);\n        create_incremental_info_sections(this,symtab);\n      }\n      pOVar11 = create_shstrtab(this);\n      off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);\n      ppOVar19 = (this->unattached_section_list_).\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                 _M_impl._M_start;\n      uVar22 = shndx;\n      if (ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar9 = Parameters::doing_static_link(in_stack_ffffff34,in_stack_ffffff38);\n    iVar23 = extraout_ECX;\n    pOVar17 = local_90;\nLAB_00087f2e:\n    if (cVar9 == '\0') {\n      local_80 = (Output_segment *)0x0;\nLAB_00087f39:\n      if (local_8c == (Output_segment_headers *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f));\n      }\n      if (local_80 == (Output_segment *)0x0) goto LAB_00087f52;\nLAB_0008878f:\n      Output_segment::add_initial_output_data(local_80,&local_8c->super_Output_data);\n      if (pOVar17 != (Output_segment *)0x0) {\nLAB_00087f5a:\n        Output_segment::add_initial_output_data(pOVar17,&local_8c->super_Output_data);\n        if (local_80 == (Output_segment *)0x0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      Output_segment::add_initial_output_data(local_80,&local_94->super_Output_data);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = (Output_segment *)0x0;\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    pSVar12 = this->script_options_;\n    if ((pSVar12->script_sections_).saw_sections_clause_ == false) goto LAB_00088468;\nLAB_00087f99:\n    if ((pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0) goto LAB_00088468;\n    if (iVar23 != 0) goto code_r0x00087faf;\n  }" { (expression_statement "iVar15 = *(int *)(target + 4);" (assignment_expression "iVar15 = *(int *)(target + 4)" identifier = (pointer_expression "*(int *)(target + 4)" * (cast_expression "(int *)(target + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(target + 4)" ( (binary_expression "target + 4" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar15 + 0x30) == '\0') {\n      if (*(char *)(iVar23 + 0x41b8) != '\0') {\n        local_9c = *(undefined8 *)(iVar23 + 0x5218);\n        if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n          local_9c = *(undefined8 *)(iVar15 + 0x20);\n        }\n        lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x41bc),*(undefined4 *)(iVar23 + 0x41c0),\n                           (int)local_9c,local_9c._4_4_);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar23 + 0x423c) != '\0') {\n      local_9c = *(undefined8 *)(iVar23 + 0x5218);\n      if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n        local_9c = *(undefined8 *)(iVar15 + 0x20);\n      }\n      lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x4240),*(undefined4 *)(iVar23 + 0x4244),\n                         (int)local_9c,local_9c._4_4_);\njoined_r0x0008887a:\n      if (lVar25 != 0) {\n        cVar9 = *(char *)(iVar23 + 0x318d);\n        pOVar17 = (Output_segment *)0x0;\n        goto LAB_00087f2e;\n      }\n    }" if (parenthesized_expression "(*(char *)(iVar15 + 0x30) == '\0')" ( (binary_expression "*(char *)(iVar15 + 0x30) == '\0'" (pointer_expression "*(char *)(iVar15 + 0x30)" * (cast_expression "(char *)(iVar15 + 0x30)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x30)" ( (binary_expression "iVar15 + 0x30" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (*(char *)(iVar23 + 0x41b8) != '\0') {\n        local_9c = *(undefined8 *)(iVar23 + 0x5218);\n        if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n          local_9c = *(undefined8 *)(iVar15 + 0x20);\n        }\n        lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x41bc),*(undefined4 *)(iVar23 + 0x41c0),\n                           (int)local_9c,local_9c._4_4_);\n        goto joined_r0x0008887a;\n      }\n    }" { (if_statement "if (*(char *)(iVar23 + 0x41b8) != '\0') {\n        local_9c = *(undefined8 *)(iVar23 + 0x5218);\n        if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n          local_9c = *(undefined8 *)(iVar15 + 0x20);\n        }\n        lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x41bc),*(undefined4 *)(iVar23 + 0x41c0),\n                           (int)local_9c,local_9c._4_4_);\n        goto joined_r0x0008887a;\n      }" if (parenthesized_expression "(*(char *)(iVar23 + 0x41b8) != '\0')" ( (binary_expression "*(char *)(iVar23 + 0x41b8) != '\0'" (pointer_expression "*(char *)(iVar23 + 0x41b8)" * (cast_expression "(char *)(iVar23 + 0x41b8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x41b8)" ( (binary_expression "iVar23 + 0x41b8" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        local_9c = *(undefined8 *)(iVar23 + 0x5218);\n        if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n          local_9c = *(undefined8 *)(iVar15 + 0x20);\n        }\n        lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x41bc),*(undefined4 *)(iVar23 + 0x41c0),\n                           (int)local_9c,local_9c._4_4_);\n        goto joined_r0x0008887a;\n      }" { (expression_statement "local_9c = *(undefined8 *)(iVar23 + 0x5218);" (assignment_expression "local_9c = *(undefined8 *)(iVar23 + 0x5218)" identifier = (pointer_expression "*(undefined8 *)(iVar23 + 0x5218)" * (cast_expression "(undefined8 *)(iVar23 + 0x5218)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x5218)" ( (binary_expression "iVar23 + 0x5218" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n          local_9c = *(undefined8 *)(iVar15 + 0x20);\n        }" if (parenthesized_expression "(*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0)" ( (binary_expression "*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0" (binary_expression "*(int *)(iVar23 + 0x521c) == 0" (pointer_expression "*(int *)(iVar23 + 0x521c)" * (cast_expression "(int *)(iVar23 + 0x521c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x521c)" ( (binary_expression "iVar23 + 0x521c" identifier + number_literal) )))) == number_literal) && (binary_expression "*(int *)(iVar23 + 0x5218) == 0" (pointer_expression "*(int *)(iVar23 + 0x5218)" * (cast_expression "(int *)(iVar23 + 0x5218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x5218)" ( (binary_expression "iVar23 + 0x5218" identifier + number_literal) )))) == number_literal)) )) (compound_statement "{\n          local_9c = *(undefined8 *)(iVar15 + 0x20);\n        }" { (expression_statement "local_9c = *(undefined8 *)(iVar15 + 0x20);" (assignment_expression "local_9c = *(undefined8 *)(iVar15 + 0x20)" identifier = (pointer_expression "*(undefined8 *)(iVar15 + 0x20)" * (cast_expression "(undefined8 *)(iVar15 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x20)" ( (binary_expression "iVar15 + 0x20" identifier + number_literal) ))))) ;) })) (expression_statement "lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x41bc),*(undefined4 *)(iVar23 + 0x41c0),\n                           (int)local_9c,local_9c._4_4_);" (assignment_expression "lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x41bc),*(undefined4 *)(iVar23 + 0x41c0),\n                           (int)local_9c,local_9c._4_4_)" identifier = (call_expression "__umoddi3(*(undefined4 *)(iVar23 + 0x41bc),*(undefined4 *)(iVar23 + 0x41c0),\n                           (int)local_9c,local_9c._4_4_)" identifier (argument_list "(*(undefined4 *)(iVar23 + 0x41bc),*(undefined4 *)(iVar23 + 0x41c0),\n                           (int)local_9c,local_9c._4_4_)" ( (pointer_expression "*(undefined4 *)(iVar23 + 0x41bc)" * (cast_expression "(undefined4 *)(iVar23 + 0x41bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x41bc)" ( (binary_expression "iVar23 + 0x41bc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar23 + 0x41c0)" * (cast_expression "(undefined4 *)(iVar23 + 0x41c0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x41c0)" ( (binary_expression "iVar23 + 0x41c0" identifier + number_literal) )))) , (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier) , (field_expression "local_9c._4_4_" identifier . field_identifier) )))) ;) (goto_statement "goto joined_r0x0008887a;" goto statement_identifier ;) })) }) (else_clause "else if (*(char *)(iVar23 + 0x423c) != '\0') {\n      local_9c = *(undefined8 *)(iVar23 + 0x5218);\n      if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n        local_9c = *(undefined8 *)(iVar15 + 0x20);\n      }\n      lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x4240),*(undefined4 *)(iVar23 + 0x4244),\n                         (int)local_9c,local_9c._4_4_);\njoined_r0x0008887a:\n      if (lVar25 != 0) {\n        cVar9 = *(char *)(iVar23 + 0x318d);\n        pOVar17 = (Output_segment *)0x0;\n        goto LAB_00087f2e;\n      }\n    }" else (if_statement "if (*(char *)(iVar23 + 0x423c) != '\0') {\n      local_9c = *(undefined8 *)(iVar23 + 0x5218);\n      if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n        local_9c = *(undefined8 *)(iVar15 + 0x20);\n      }\n      lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x4240),*(undefined4 *)(iVar23 + 0x4244),\n                         (int)local_9c,local_9c._4_4_);\njoined_r0x0008887a:\n      if (lVar25 != 0) {\n        cVar9 = *(char *)(iVar23 + 0x318d);\n        pOVar17 = (Output_segment *)0x0;\n        goto LAB_00087f2e;\n      }\n    }" if (parenthesized_expression "(*(char *)(iVar23 + 0x423c) != '\0')" ( (binary_expression "*(char *)(iVar23 + 0x423c) != '\0'" (pointer_expression "*(char *)(iVar23 + 0x423c)" * (cast_expression "(char *)(iVar23 + 0x423c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x423c)" ( (binary_expression "iVar23 + 0x423c" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_9c = *(undefined8 *)(iVar23 + 0x5218);\n      if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n        local_9c = *(undefined8 *)(iVar15 + 0x20);\n      }\n      lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x4240),*(undefined4 *)(iVar23 + 0x4244),\n                         (int)local_9c,local_9c._4_4_);\njoined_r0x0008887a:\n      if (lVar25 != 0) {\n        cVar9 = *(char *)(iVar23 + 0x318d);\n        pOVar17 = (Output_segment *)0x0;\n        goto LAB_00087f2e;\n      }\n    }" { (expression_statement "local_9c = *(undefined8 *)(iVar23 + 0x5218);" (assignment_expression "local_9c = *(undefined8 *)(iVar23 + 0x5218)" identifier = (pointer_expression "*(undefined8 *)(iVar23 + 0x5218)" * (cast_expression "(undefined8 *)(iVar23 + 0x5218)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x5218)" ( (binary_expression "iVar23 + 0x5218" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0) {\n        local_9c = *(undefined8 *)(iVar15 + 0x20);\n      }" if (parenthesized_expression "(*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0)" ( (binary_expression "*(int *)(iVar23 + 0x521c) == 0 && *(int *)(iVar23 + 0x5218) == 0" (binary_expression "*(int *)(iVar23 + 0x521c) == 0" (pointer_expression "*(int *)(iVar23 + 0x521c)" * (cast_expression "(int *)(iVar23 + 0x521c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x521c)" ( (binary_expression "iVar23 + 0x521c" identifier + number_literal) )))) == number_literal) && (binary_expression "*(int *)(iVar23 + 0x5218) == 0" (pointer_expression "*(int *)(iVar23 + 0x5218)" * (cast_expression "(int *)(iVar23 + 0x5218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x5218)" ( (binary_expression "iVar23 + 0x5218" identifier + number_literal) )))) == number_literal)) )) (compound_statement "{\n        local_9c = *(undefined8 *)(iVar15 + 0x20);\n      }" { (expression_statement "local_9c = *(undefined8 *)(iVar15 + 0x20);" (assignment_expression "local_9c = *(undefined8 *)(iVar15 + 0x20)" identifier = (pointer_expression "*(undefined8 *)(iVar15 + 0x20)" * (cast_expression "(undefined8 *)(iVar15 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x20)" ( (binary_expression "iVar15 + 0x20" identifier + number_literal) ))))) ;) })) (expression_statement "lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x4240),*(undefined4 *)(iVar23 + 0x4244),\n                         (int)local_9c,local_9c._4_4_);" (assignment_expression "lVar25 = __umoddi3(*(undefined4 *)(iVar23 + 0x4240),*(undefined4 *)(iVar23 + 0x4244),\n                         (int)local_9c,local_9c._4_4_)" identifier = (call_expression "__umoddi3(*(undefined4 *)(iVar23 + 0x4240),*(undefined4 *)(iVar23 + 0x4244),\n                         (int)local_9c,local_9c._4_4_)" identifier (argument_list "(*(undefined4 *)(iVar23 + 0x4240),*(undefined4 *)(iVar23 + 0x4244),\n                         (int)local_9c,local_9c._4_4_)" ( (pointer_expression "*(undefined4 *)(iVar23 + 0x4240)" * (cast_expression "(undefined4 *)(iVar23 + 0x4240)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x4240)" ( (binary_expression "iVar23 + 0x4240" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar23 + 0x4244)" * (cast_expression "(undefined4 *)(iVar23 + 0x4244)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x4244)" ( (binary_expression "iVar23 + 0x4244" identifier + number_literal) )))) , (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier) , (field_expression "local_9c._4_4_" identifier . field_identifier) )))) ;) (labeled_statement "joined_r0x0008887a:\n      if (lVar25 != 0) {\n        cVar9 = *(char *)(iVar23 + 0x318d);\n        pOVar17 = (Output_segment *)0x0;\n        goto LAB_00087f2e;\n      }" statement_identifier : (if_statement "if (lVar25 != 0) {\n        cVar9 = *(char *)(iVar23 + 0x318d);\n        pOVar17 = (Output_segment *)0x0;\n        goto LAB_00087f2e;\n      }" if (parenthesized_expression "(lVar25 != 0)" ( (binary_expression "lVar25 != 0" identifier != number_literal) )) (compound_statement "{\n        cVar9 = *(char *)(iVar23 + 0x318d);\n        pOVar17 = (Output_segment *)0x0;\n        goto LAB_00087f2e;\n      }" { (expression_statement "cVar9 = *(char *)(iVar23 + 0x318d);" (assignment_expression "cVar9 = *(char *)(iVar23 + 0x318d)" identifier = (pointer_expression "*(char *)(iVar23 + 0x318d)" * (cast_expression "(char *)(iVar23 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x318d)" ( (binary_expression "iVar23 + 0x318d" identifier + number_literal) ))))) ;) (expression_statement "pOVar17 = (Output_segment *)0x0;" (assignment_expression "pOVar17 = (Output_segment *)0x0" identifier = (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00087f2e;" goto statement_identifier ;) }))) })))) (expression_statement "pOVar17 = local_90;" (assignment_expression "pOVar17 = local_90" identifier = identifier) ;) (if_statement "if ((local_90 != (Output_segment *)0x0) && (this_01 == (Output_segment *)0x0)) {\n      if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xaef,(char *)(unaff_EDI + 0x19c44f));\n      }\n      cVar9 = *(char *)(iVar23 + 0x318d);\n      goto LAB_00087f2e;\n    }" if (parenthesized_expression "((local_90 != (Output_segment *)0x0) && (this_01 == (Output_segment *)0x0))" ( (binary_expression "(local_90 != (Output_segment *)0x0) && (this_01 == (Output_segment *)0x0)" (parenthesized_expression "(local_90 != (Output_segment *)0x0)" ( (binary_expression "local_90 != (Output_segment *)0x0" identifier != (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(this_01 == (Output_segment *)0x0)" ( (binary_expression "this_01 == (Output_segment *)0x0" identifier == (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xaef,(char *)(unaff_EDI + 0x19c44f));\n      }\n      cVar9 = *(char *)(iVar23 + 0x318d);\n      goto LAB_00087f2e;\n    }" { (if_statement "if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xaef,(char *)(unaff_EDI + 0x19c44f));\n      }" if (parenthesized_expression "((this->script_options_->script_sections_).saw_sections_clause_ == false)" ( (binary_expression "(this->script_options_->script_sections_).saw_sections_clause_ == false" (field_expression "(this->script_options_->script_sections_).saw_sections_clause_" (parenthesized_expression "(this->script_options_->script_sections_)" ( (field_expression "this->script_options_->script_sections_" (field_expression "this->script_options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xaef,(char *)(unaff_EDI + 0x19c44f));\n      }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xaef,(char *)(unaff_EDI + 0x19c44f));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xaef,(char *)(unaff_EDI + 0x19c44f))" identifier (argument_list "((char *)(unaff_EDI + 0x19b1cf),0xaef,(char *)(unaff_EDI + 0x19c44f))" ( (cast_expression "(char *)(unaff_EDI + 0x19b1cf)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x19b1cf)" ( (binary_expression "unaff_EDI + 0x19b1cf" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x19c44f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x19c44f)" ( (binary_expression "unaff_EDI + 0x19c44f" identifier + number_literal) ))) ))) ;) })) (expression_statement "cVar9 = *(char *)(iVar23 + 0x318d);" (assignment_expression "cVar9 = *(char *)(iVar23 + 0x318d)" identifier = (pointer_expression "*(char *)(iVar23 + 0x318d)" * (cast_expression "(char *)(iVar23 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x318d)" ( (binary_expression "iVar23 + 0x318d" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00087f2e;" goto statement_identifier ;) })) (expression_statement "cVar9 = *(char *)(iVar23 + 0x318d);" (assignment_expression "cVar9 = *(char *)(iVar23 + 0x318d)" identifier = (pointer_expression "*(char *)(iVar23 + 0x318d)" * (cast_expression "(char *)(iVar23 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x318d)" ( (binary_expression "iVar23 + 0x318d" identifier + number_literal) ))))) ;) (if_statement "if (this_01 == (Output_segment *)0x0) goto LAB_00087f2e;" if (parenthesized_expression "(this_01 == (Output_segment *)0x0)" ( (binary_expression "this_01 == (Output_segment *)0x0" identifier == (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00087f2e;" goto statement_identifier ;)) (expression_statement "local_80 = this_01;" (assignment_expression "local_80 = this_01" identifier = identifier) ;) (if_statement "if (((this_01->field_0x19c & 2) == 0) ||\n       ((this->script_options_->script_sections_).saw_sections_clause_ != false)) {\n      if (cVar9 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }" if (parenthesized_expression "(((this_01->field_0x19c & 2) == 0) ||\n       ((this->script_options_->script_sections_).saw_sections_clause_ != false))" ( (binary_expression "((this_01->field_0x19c & 2) == 0) ||\n       ((this->script_options_->script_sections_).saw_sections_clause_ != false)" (parenthesized_expression "((this_01->field_0x19c & 2) == 0)" ( (binary_expression "(this_01->field_0x19c & 2) == 0" (parenthesized_expression "(this_01->field_0x19c & 2)" ( (binary_expression "this_01->field_0x19c & 2" (field_expression "this_01->field_0x19c" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((this->script_options_->script_sections_).saw_sections_clause_ != false)" ( (binary_expression "(this->script_options_->script_sections_).saw_sections_clause_ != false" (field_expression "(this->script_options_->script_sections_).saw_sections_clause_" (parenthesized_expression "(this->script_options_->script_sections_)" ( (field_expression "this->script_options_->script_sections_" (field_expression "this->script_options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) != false) ))) )) (compound_statement "{\n      if (cVar9 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }" { (if_statement "if (cVar9 != '\0') goto LAB_000887ba;" if (parenthesized_expression "(cVar9 != '\0')" ( (binary_expression "cVar9 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000887ba;" goto statement_identifier ;)) (goto_statement "goto LAB_00087f39;" goto statement_identifier ;) })) (if_statement "if (cVar9 != '\0') goto LAB_000887ba;" if (parenthesized_expression "(cVar9 != '\0')" ( (binary_expression "cVar9 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000887ba;" goto statement_identifier ;)) (if_statement "if ((((local_94->super_Output_data).field_0x1c & 2) == 0) &&\n       ((*(local_94->super_Output_data)._vptr_Output_data[0xe])(local_94),\n       ((local_94->super_Output_data).field_0x1c & 2) == 0)) {\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0x163,(char *)(unaff_EDI + 0x19c43b));\n    }" if (parenthesized_expression "((((local_94->super_Output_data).field_0x1c & 2) == 0) &&\n       ((*(local_94->super_Output_data)._vptr_Output_data[0xe])(local_94),\n       ((local_94->super_Output_data).field_0x1c & 2) == 0))" ( (binary_expression "(((local_94->super_Output_data).field_0x1c & 2) == 0) &&\n       ((*(local_94->super_Output_data)._vptr_Output_data[0xe])(local_94),\n       ((local_94->super_Output_data).field_0x1c & 2) == 0)" (parenthesized_expression "(((local_94->super_Output_data).field_0x1c & 2) == 0)" ( (binary_expression "((local_94->super_Output_data).field_0x1c & 2) == 0" (parenthesized_expression "((local_94->super_Output_data).field_0x1c & 2)" ( (binary_expression "(local_94->super_Output_data).field_0x1c & 2" (field_expression "(local_94->super_Output_data).field_0x1c" (parenthesized_expression "(local_94->super_Output_data)" ( (field_expression "local_94->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "((*(local_94->super_Output_data)._vptr_Output_data[0xe])(local_94),\n       ((local_94->super_Output_data).field_0x1c & 2) == 0)" ( (comma_expression "(*(local_94->super_Output_data)._vptr_Output_data[0xe])(local_94),\n       ((local_94->super_Output_data).field_0x1c & 2) == 0" (call_expression "(*(local_94->super_Output_data)._vptr_Output_data[0xe])(local_94)" (parenthesized_expression "(*(local_94->super_Output_data)._vptr_Output_data[0xe])" ( (pointer_expression "*(local_94->super_Output_data)._vptr_Output_data[0xe]" * (subscript_expression "(local_94->super_Output_data)._vptr_Output_data[0xe]" (field_expression "(local_94->super_Output_data)._vptr_Output_data" (parenthesized_expression "(local_94->super_Output_data)" ( (field_expression "local_94->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(local_94)" ( identifier ))) , (binary_expression "((local_94->super_Output_data).field_0x1c & 2) == 0" (parenthesized_expression "((local_94->super_Output_data).field_0x1c & 2)" ( (binary_expression "(local_94->super_Output_data).field_0x1c & 2" (field_expression "(local_94->super_Output_data).field_0x1c" (parenthesized_expression "(local_94->super_Output_data)" ( (field_expression "local_94->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal)) ))) )) (compound_statement "{\nLAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0x163,(char *)(unaff_EDI + 0x19c43b));\n    }" { (labeled_statement "LAB_00088c5f:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0x163,(char *)(unaff_EDI + 0x19c43b));" statement_identifier : comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0x163,(char *)(unaff_EDI + 0x19c43b));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0x163,(char *)(unaff_EDI + 0x19c43b))" identifier (argument_list "((char *)(unaff_EDI + 0x1998e3),0x163,(char *)(unaff_EDI + 0x19c43b))" ( (cast_expression "(char *)(unaff_EDI + 0x1998e3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1998e3)" ( (binary_expression "unaff_EDI + 0x1998e3" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x19c43b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x19c43b)" ( (binary_expression "unaff_EDI + 0x19c43b" identifier + number_literal) ))) ))) ;)) })) (if_statement "if (((local_8c->super_Output_data).field_0x1c & 2) == 0) {\n      (*(local_8c->super_Output_data)._vptr_Output_data[0xe])(local_8c);\n      if (((local_8c->super_Output_data).field_0x1c & 2) == 0) goto LAB_00088c5f;\n      if (((local_94->super_Output_data).field_0x1c & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0xcf,(char *)(unaff_EDI + 0x19c68f));\n      }\n    }" if (parenthesized_expression "(((local_8c->super_Output_data).field_0x1c & 2) == 0)" ( (binary_expression "((local_8c->super_Output_data).field_0x1c & 2) == 0" (parenthesized_expression "((local_8c->super_Output_data).field_0x1c & 2)" ( (binary_expression "(local_8c->super_Output_data).field_0x1c & 2" (field_expression "(local_8c->super_Output_data).field_0x1c" (parenthesized_expression "(local_8c->super_Output_data)" ( (field_expression "local_8c->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      (*(local_8c->super_Output_data)._vptr_Output_data[0xe])(local_8c);\n      if (((local_8c->super_Output_data).field_0x1c & 2) == 0) goto LAB_00088c5f;\n      if (((local_94->super_Output_data).field_0x1c & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0xcf,(char *)(unaff_EDI + 0x19c68f));\n      }\n    }" { (expression_statement "(*(local_8c->super_Output_data)._vptr_Output_data[0xe])(local_8c);" (call_expression "(*(local_8c->super_Output_data)._vptr_Output_data[0xe])(local_8c)" (parenthesized_expression "(*(local_8c->super_Output_data)._vptr_Output_data[0xe])" ( (pointer_expression "*(local_8c->super_Output_data)._vptr_Output_data[0xe]" * (subscript_expression "(local_8c->super_Output_data)._vptr_Output_data[0xe]" (field_expression "(local_8c->super_Output_data)._vptr_Output_data" (parenthesized_expression "(local_8c->super_Output_data)" ( (field_expression "local_8c->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(local_8c)" ( identifier ))) ;) (if_statement "if (((local_8c->super_Output_data).field_0x1c & 2) == 0) goto LAB_00088c5f;" if (parenthesized_expression "(((local_8c->super_Output_data).field_0x1c & 2) == 0)" ( (binary_expression "((local_8c->super_Output_data).field_0x1c & 2) == 0" (parenthesized_expression "((local_8c->super_Output_data).field_0x1c & 2)" ( (binary_expression "(local_8c->super_Output_data).field_0x1c & 2" (field_expression "(local_8c->super_Output_data).field_0x1c" (parenthesized_expression "(local_8c->super_Output_data)" ( (field_expression "local_8c->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00088c5f;" goto statement_identifier ;)) (if_statement "if (((local_94->super_Output_data).field_0x1c & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0xcf,(char *)(unaff_EDI + 0x19c68f));\n      }" if (parenthesized_expression "(((local_94->super_Output_data).field_0x1c & 2) == 0)" ( (binary_expression "((local_94->super_Output_data).field_0x1c & 2) == 0" (parenthesized_expression "((local_94->super_Output_data).field_0x1c & 2)" ( (binary_expression "(local_94->super_Output_data).field_0x1c & 2" (field_expression "(local_94->super_Output_data).field_0x1c" (parenthesized_expression "(local_94->super_Output_data)" ( (field_expression "local_94->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0xcf,(char *)(unaff_EDI + 0x19c68f));\n      }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0xcf,(char *)(unaff_EDI + 0x19c68f));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x1998e3),0xcf,(char *)(unaff_EDI + 0x19c68f))" identifier (argument_list "((char *)(unaff_EDI + 0x1998e3),0xcf,(char *)(unaff_EDI + 0x19c68f))" ( (cast_expression "(char *)(unaff_EDI + 0x1998e3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1998e3)" ( (binary_expression "unaff_EDI + 0x1998e3" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x19c68f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x19c68f)" ( (binary_expression "unaff_EDI + 0x19c68f" identifier + number_literal) ))) ))) ;) })) })) (expression_statement "uVar22 = (int)(local_94->super_Output_data).data_size_ +\n             (int)(local_8c->super_Output_data).data_size_;" (assignment_expression "uVar22 = (int)(local_94->super_Output_data).data_size_ +\n             (int)(local_8c->super_Output_data).data_size_" identifier = (binary_expression "(int)(local_94->super_Output_data).data_size_ +\n             (int)(local_8c->super_Output_data).data_size_" (cast_expression "(int)(local_94->super_Output_data).data_size_" ( (type_descriptor "int" primitive_type) ) (field_expression "(local_94->super_Output_data).data_size_" (parenthesized_expression "(local_94->super_Output_data)" ( (field_expression "local_94->super_Output_data" identifier -> field_identifier) )) . field_identifier)) + (cast_expression "(int)(local_8c->super_Output_data).data_size_" ( (type_descriptor "int" primitive_type) ) (field_expression "(local_8c->super_Output_data).data_size_" (parenthesized_expression "(local_8c->super_Output_data)" ( (field_expression "local_8c->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) ;) (expression_statement "iVar23 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar23 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (iVar23 == 0) {\n                    /* WARNING: Subroutine does not return */\n      Target::abi_pagesize((Target *)in_stack_ffffff34);\n    }" if (parenthesized_expression "(iVar23 == 0)" ( (binary_expression "iVar23 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      Target::abi_pagesize((Target *)in_stack_ffffff34);\n    }" { comment (labeled_statement "Target::abi_pagesize((Target *)in_stack_ffffff34);" statement_identifier : (ERROR ":" :) (expression_statement "abi_pagesize((Target *)in_stack_ffffff34);" (call_expression "abi_pagesize((Target *)in_stack_ffffff34)" identifier (argument_list "((Target *)in_stack_ffffff34)" ( (cast_expression "(Target *)in_stack_ffffff34" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) })) (expression_statement "local_a0 = *(int *)(iVar23 + 0x521c);" (assignment_expression "local_a0 = *(int *)(iVar23 + 0x521c)" identifier = (pointer_expression "*(int *)(iVar23 + 0x521c)" * (cast_expression "(int *)(iVar23 + 0x521c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x521c)" ( (binary_expression "iVar23 + 0x521c" identifier + number_literal) ))))) ;) (expression_statement "local_a4 = *(int *)(iVar23 + 0x5218);" (assignment_expression "local_a4 = *(int *)(iVar23 + 0x5218)" identifier = (pointer_expression "*(int *)(iVar23 + 0x5218)" * (cast_expression "(int *)(iVar23 + 0x5218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x5218)" ( (binary_expression "iVar23 + 0x5218" identifier + number_literal) ))))) ;) (if_statement "if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(*(int *)(target + 4) + 0x24);\n      local_a4 = *(int *)(*(int *)(target + 4) + 0x20);\n    }" if (parenthesized_expression "(local_a0 == 0 && local_a4 == 0)" ( (binary_expression "local_a0 == 0 && local_a4 == 0" (binary_expression "local_a0 == 0" identifier == number_literal) && (binary_expression "local_a4 == 0" identifier == number_literal)) )) (compound_statement "{\n      local_a0 = *(int *)(*(int *)(target + 4) + 0x24);\n      local_a4 = *(int *)(*(int *)(target + 4) + 0x20);\n    }" { (expression_statement "local_a0 = *(int *)(*(int *)(target + 4) + 0x24);" (assignment_expression "local_a0 = *(int *)(*(int *)(target + 4) + 0x24)" identifier = (pointer_expression "*(int *)(*(int *)(target + 4) + 0x24)" * (cast_expression "(int *)(*(int *)(target + 4) + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(target + 4) + 0x24)" ( (binary_expression "*(int *)(target + 4) + 0x24" (pointer_expression "*(int *)(target + 4)" * (cast_expression "(int *)(target + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(target + 4)" ( (binary_expression "target + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "local_a4 = *(int *)(*(int *)(target + 4) + 0x20);" (assignment_expression "local_a4 = *(int *)(*(int *)(target + 4) + 0x20)" identifier = (pointer_expression "*(int *)(*(int *)(target + 4) + 0x20)" * (cast_expression "(int *)(*(int *)(target + 4) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(target + 4) + 0x20)" ( (binary_expression "*(int *)(target + 4) + 0x20" (pointer_expression "*(int *)(target + 4)" * (cast_expression "(int *)(target + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(target + 4)" ( (binary_expression "target + 4" identifier + number_literal) )))) + number_literal) ))))) ;) })) (expression_statement "uVar5 = (uint)this_01->paddr_;" (assignment_expression "uVar5 = (uint)this_01->paddr_" identifier = (cast_expression "(uint)this_01->paddr_" ( (type_descriptor "uint" type_identifier) ) (field_expression "this_01->paddr_" identifier -> field_identifier))) ;) (expression_statement "uVar6 = *(uint *)((int)&this_01->paddr_ + 4);" (assignment_expression "uVar6 = *(uint *)((int)&this_01->paddr_ + 4)" identifier = (pointer_expression "*(uint *)((int)&this_01->paddr_ + 4)" * (cast_expression "(uint *)((int)&this_01->paddr_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_01->paddr_ + 4)" ( (binary_expression "(int)&this_01->paddr_ + 4" (cast_expression "(int)&this_01->paddr_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_01->paddr_" & (field_expression "this_01->paddr_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar20 = uVar5 - uVar22 & -local_a4;" (assignment_expression "uVar20 = uVar5 - uVar22 & -local_a4" identifier = (binary_expression "uVar5 - uVar22 & -local_a4" (binary_expression "uVar5 - uVar22" identifier - identifier) & (unary_expression "-local_a4" - identifier))) ;) (expression_statement "uVar21 = uVar6 - (uVar5 < uVar22) & -(local_a0 + (uint)(local_a4 != 0));" (assignment_expression "uVar21 = uVar6 - (uVar5 < uVar22) & -(local_a0 + (uint)(local_a4 != 0))" identifier = (binary_expression "uVar6 - (uVar5 < uVar22) & -(local_a0 + (uint)(local_a4 != 0))" (binary_expression "uVar6 - (uVar5 < uVar22)" identifier - (parenthesized_expression "(uVar5 < uVar22)" ( (binary_expression "uVar5 < uVar22" identifier < identifier) ))) & (unary_expression "-(local_a0 + (uint)(local_a4 != 0))" - (parenthesized_expression "(local_a0 + (uint)(local_a4 != 0))" ( (binary_expression "local_a0 + (uint)(local_a4 != 0)" identifier + (call_expression "(uint)(local_a4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_a4 != 0)" ( (binary_expression "local_a4 != 0" identifier != number_literal) )))) ))))) ;) (expression_statement "uVar13 = uVar5 - uVar20;" (assignment_expression "uVar13 = uVar5 - uVar20" identifier = (binary_expression "uVar5 - uVar20" identifier - identifier)) ;) (expression_statement "uVar16 = (uVar6 - uVar21) - (uint)(uVar5 < uVar20);" (assignment_expression "uVar16 = (uVar6 - uVar21) - (uint)(uVar5 < uVar20)" identifier = (binary_expression "(uVar6 - uVar21) - (uint)(uVar5 < uVar20)" (parenthesized_expression "(uVar6 - uVar21)" ( (binary_expression "uVar6 - uVar21" identifier - identifier) )) - (call_expression "(uint)(uVar5 < uVar20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < uVar20)" ( (binary_expression "uVar5 < uVar20" identifier < identifier) ))))) ;) (expression_statement "cVar9 = *(char *)(iVar23 + 0x318d);" (assignment_expression "cVar9 = *(char *)(iVar23 + 0x318d)" identifier = (pointer_expression "*(char *)(iVar23 + 0x318d)" * (cast_expression "(char *)(iVar23 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x318d)" ( (binary_expression "iVar23 + 0x318d" identifier + number_literal) ))))) ;) (if_statement "if (uVar16 <= uVar6 && (uint)(uVar5 < uVar13) <= uVar6 - uVar16) {\n      uVar7 = *(uint *)((int)&this_01->vaddr_ + 4);\n      uVar8 = (uint)this_01->vaddr_;\n      if (uVar16 <= uVar7 && (uint)(uVar8 < uVar13) <= uVar7 - uVar16) {\n        *(uint *)&this_01->paddr_ = uVar20;\n        *(uint *)&this_01->vaddr_ = (uVar8 - uVar5) + uVar20;\n        *(uint *)((int)&this_01->vaddr_ + 4) =\n             ((uVar7 - uVar6) - (uint)(uVar8 < uVar5)) + uVar21 + (uint)CARRY4(uVar8 - uVar5,uVar20)\n        ;\n        this_01->field_0x19c = this_01->field_0x19c | 2;\n        *(uint *)((int)&this_01->paddr_ + 4) = uVar21;\n        iVar23 = uVar16 - (uVar13 < uVar22);\n        if (cVar9 != '\0') goto LAB_000887ba;\n        if (uVar13 - uVar22 == 0 && iVar23 == 0) goto LAB_0008878f;\n        if (this_01 == (Output_segment *)0x0) goto LAB_0008878f;\n        od = (Output_data *)operator_new(0x2c);\n        *(undefined4 *)&od->address_ = 0;\n        *(uint *)&od->data_size_ = uVar13 - uVar22;\n        bVar2 = od->field_0x1c;\n        *(undefined4 *)((int)&od->address_ + 4) = 0;\n        od[1]._vptr_Output_data = (_func_int_varargs **)0x0;\n        *(undefined4 *)&od[1].address_ = 1;\n        od->field_0x1c = bVar2 & 0xe0 | 10;\n        *(undefined4 *)((int)&od[1].address_ + 4) = 0;\n        *(int *)((int)&od->data_size_ + 4) = iVar23;\n        *(undefined4 *)&od->offset_ = 0xffffffff;\n        *(undefined4 *)((int)&od->offset_ + 4) = 0xffffffff;\n        od->_vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2759db);\n        Output_segment::add_initial_output_data(this_01,od);\n        goto LAB_0008878f;\n      }\n    }" if (parenthesized_expression "(uVar16 <= uVar6 && (uint)(uVar5 < uVar13) <= uVar6 - uVar16)" ( (binary_expression "uVar16 <= uVar6 && (uint)(uVar5 < uVar13) <= uVar6 - uVar16" (binary_expression "uVar16 <= uVar6" identifier <= identifier) && (binary_expression "(uint)(uVar5 < uVar13) <= uVar6 - uVar16" (call_expression "(uint)(uVar5 < uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < uVar13)" ( (binary_expression "uVar5 < uVar13" identifier < identifier) ))) <= (binary_expression "uVar6 - uVar16" identifier - identifier))) )) (compound_statement "{\n      uVar7 = *(uint *)((int)&this_01->vaddr_ + 4);\n      uVar8 = (uint)this_01->vaddr_;\n      if (uVar16 <= uVar7 && (uint)(uVar8 < uVar13) <= uVar7 - uVar16) {\n        *(uint *)&this_01->paddr_ = uVar20;\n        *(uint *)&this_01->vaddr_ = (uVar8 - uVar5) + uVar20;\n        *(uint *)((int)&this_01->vaddr_ + 4) =\n             ((uVar7 - uVar6) - (uint)(uVar8 < uVar5)) + uVar21 + (uint)CARRY4(uVar8 - uVar5,uVar20)\n        ;\n        this_01->field_0x19c = this_01->field_0x19c | 2;\n        *(uint *)((int)&this_01->paddr_ + 4) = uVar21;\n        iVar23 = uVar16 - (uVar13 < uVar22);\n        if (cVar9 != '\0') goto LAB_000887ba;\n        if (uVar13 - uVar22 == 0 && iVar23 == 0) goto LAB_0008878f;\n        if (this_01 == (Output_segment *)0x0) goto LAB_0008878f;\n        od = (Output_data *)operator_new(0x2c);\n        *(undefined4 *)&od->address_ = 0;\n        *(uint *)&od->data_size_ = uVar13 - uVar22;\n        bVar2 = od->field_0x1c;\n        *(undefined4 *)((int)&od->address_ + 4) = 0;\n        od[1]._vptr_Output_data = (_func_int_varargs **)0x0;\n        *(undefined4 *)&od[1].address_ = 1;\n        od->field_0x1c = bVar2 & 0xe0 | 10;\n        *(undefined4 *)((int)&od[1].address_ + 4) = 0;\n        *(int *)((int)&od->data_size_ + 4) = iVar23;\n        *(undefined4 *)&od->offset_ = 0xffffffff;\n        *(undefined4 *)((int)&od->offset_ + 4) = 0xffffffff;\n        od->_vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2759db);\n        Output_segment::add_initial_output_data(this_01,od);\n        goto LAB_0008878f;\n      }\n    }" { (expression_statement "uVar7 = *(uint *)((int)&this_01->vaddr_ + 4);" (assignment_expression "uVar7 = *(uint *)((int)&this_01->vaddr_ + 4)" identifier = (pointer_expression "*(uint *)((int)&this_01->vaddr_ + 4)" * (cast_expression "(uint *)((int)&this_01->vaddr_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_01->vaddr_ + 4)" ( (binary_expression "(int)&this_01->vaddr_ + 4" (cast_expression "(int)&this_01->vaddr_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_01->vaddr_" & (field_expression "this_01->vaddr_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar8 = (uint)this_01->vaddr_;" (assignment_expression "uVar8 = (uint)this_01->vaddr_" identifier = (cast_expression "(uint)this_01->vaddr_" ( (type_descriptor "uint" type_identifier) ) (field_expression "this_01->vaddr_" identifier -> field_identifier))) ;) (if_statement "if (uVar16 <= uVar7 && (uint)(uVar8 < uVar13) <= uVar7 - uVar16) {\n        *(uint *)&this_01->paddr_ = uVar20;\n        *(uint *)&this_01->vaddr_ = (uVar8 - uVar5) + uVar20;\n        *(uint *)((int)&this_01->vaddr_ + 4) =\n             ((uVar7 - uVar6) - (uint)(uVar8 < uVar5)) + uVar21 + (uint)CARRY4(uVar8 - uVar5,uVar20)\n        ;\n        this_01->field_0x19c = this_01->field_0x19c | 2;\n        *(uint *)((int)&this_01->paddr_ + 4) = uVar21;\n        iVar23 = uVar16 - (uVar13 < uVar22);\n        if (cVar9 != '\0') goto LAB_000887ba;\n        if (uVar13 - uVar22 == 0 && iVar23 == 0) goto LAB_0008878f;\n        if (this_01 == (Output_segment *)0x0) goto LAB_0008878f;\n        od = (Output_data *)operator_new(0x2c);\n        *(undefined4 *)&od->address_ = 0;\n        *(uint *)&od->data_size_ = uVar13 - uVar22;\n        bVar2 = od->field_0x1c;\n        *(undefined4 *)((int)&od->address_ + 4) = 0;\n        od[1]._vptr_Output_data = (_func_int_varargs **)0x0;\n        *(undefined4 *)&od[1].address_ = 1;\n        od->field_0x1c = bVar2 & 0xe0 | 10;\n        *(undefined4 *)((int)&od[1].address_ + 4) = 0;\n        *(int *)((int)&od->data_size_ + 4) = iVar23;\n        *(undefined4 *)&od->offset_ = 0xffffffff;\n        *(undefined4 *)((int)&od->offset_ + 4) = 0xffffffff;\n        od->_vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2759db);\n        Output_segment::add_initial_output_data(this_01,od);\n        goto LAB_0008878f;\n      }" if (parenthesized_expression "(uVar16 <= uVar7 && (uint)(uVar8 < uVar13) <= uVar7 - uVar16)" ( (binary_expression "uVar16 <= uVar7 && (uint)(uVar8 < uVar13) <= uVar7 - uVar16" (binary_expression "uVar16 <= uVar7" identifier <= identifier) && (binary_expression "(uint)(uVar8 < uVar13) <= uVar7 - uVar16" (call_expression "(uint)(uVar8 < uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar13)" ( (binary_expression "uVar8 < uVar13" identifier < identifier) ))) <= (binary_expression "uVar7 - uVar16" identifier - identifier))) )) (compound_statement "{\n        *(uint *)&this_01->paddr_ = uVar20;\n        *(uint *)&this_01->vaddr_ = (uVar8 - uVar5) + uVar20;\n        *(uint *)((int)&this_01->vaddr_ + 4) =\n             ((uVar7 - uVar6) - (uint)(uVar8 < uVar5)) + uVar21 + (uint)CARRY4(uVar8 - uVar5,uVar20)\n        ;\n        this_01->field_0x19c = this_01->field_0x19c | 2;\n        *(uint *)((int)&this_01->paddr_ + 4) = uVar21;\n        iVar23 = uVar16 - (uVar13 < uVar22);\n        if (cVar9 != '\0') goto LAB_000887ba;\n        if (uVar13 - uVar22 == 0 && iVar23 == 0) goto LAB_0008878f;\n        if (this_01 == (Output_segment *)0x0) goto LAB_0008878f;\n        od = (Output_data *)operator_new(0x2c);\n        *(undefined4 *)&od->address_ = 0;\n        *(uint *)&od->data_size_ = uVar13 - uVar22;\n        bVar2 = od->field_0x1c;\n        *(undefined4 *)((int)&od->address_ + 4) = 0;\n        od[1]._vptr_Output_data = (_func_int_varargs **)0x0;\n        *(undefined4 *)&od[1].address_ = 1;\n        od->field_0x1c = bVar2 & 0xe0 | 10;\n        *(undefined4 *)((int)&od[1].address_ + 4) = 0;\n        *(int *)((int)&od->data_size_ + 4) = iVar23;\n        *(undefined4 *)&od->offset_ = 0xffffffff;\n        *(undefined4 *)((int)&od->offset_ + 4) = 0xffffffff;\n        od->_vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2759db);\n        Output_segment::add_initial_output_data(this_01,od);\n        goto LAB_0008878f;\n      }" { (expression_statement "*(uint *)&this_01->paddr_ = uVar20;" (assignment_expression "*(uint *)&this_01->paddr_ = uVar20" (pointer_expression "*(uint *)&this_01->paddr_" * (cast_expression "(uint *)&this_01->paddr_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this_01->paddr_" & (field_expression "this_01->paddr_" identifier -> field_identifier)))) = identifier) ;) (expression_statement "*(uint *)&this_01->vaddr_ = (uVar8 - uVar5) + uVar20;" (assignment_expression "*(uint *)&this_01->vaddr_ = (uVar8 - uVar5) + uVar20" (pointer_expression "*(uint *)&this_01->vaddr_" * (cast_expression "(uint *)&this_01->vaddr_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this_01->vaddr_" & (field_expression "this_01->vaddr_" identifier -> field_identifier)))) = (binary_expression "(uVar8 - uVar5) + uVar20" (parenthesized_expression "(uVar8 - uVar5)" ( (binary_expression "uVar8 - uVar5" identifier - identifier) )) + identifier)) ;) (expression_statement "*(uint *)((int)&this_01->vaddr_ + 4) =\n             ((uVar7 - uVar6) - (uint)(uVar8 < uVar5)) + uVar21 + (uint)CARRY4(uVar8 - uVar5,uVar20)\n        ;" (assignment_expression "*(uint *)((int)&this_01->vaddr_ + 4) =\n             ((uVar7 - uVar6) - (uint)(uVar8 < uVar5)) + uVar21 + (uint)CARRY4(uVar8 - uVar5,uVar20)" (pointer_expression "*(uint *)((int)&this_01->vaddr_ + 4)" * (cast_expression "(uint *)((int)&this_01->vaddr_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_01->vaddr_ + 4)" ( (binary_expression "(int)&this_01->vaddr_ + 4" (cast_expression "(int)&this_01->vaddr_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_01->vaddr_" & (field_expression "this_01->vaddr_" identifier -> field_identifier))) + number_literal) )))) = (binary_expression "((uVar7 - uVar6) - (uint)(uVar8 < uVar5)) + uVar21 + (uint)CARRY4(uVar8 - uVar5,uVar20)" (binary_expression "((uVar7 - uVar6) - (uint)(uVar8 < uVar5)) + uVar21" (parenthesized_expression "((uVar7 - uVar6) - (uint)(uVar8 < uVar5))" ( (binary_expression "(uVar7 - uVar6) - (uint)(uVar8 < uVar5)" (parenthesized_expression "(uVar7 - uVar6)" ( (binary_expression "uVar7 - uVar6" identifier - identifier) )) - (call_expression "(uint)(uVar8 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar5)" ( (binary_expression "uVar8 < uVar5" identifier < identifier) )))) )) + identifier) + (cast_expression "(uint)CARRY4(uVar8 - uVar5,uVar20)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar8 - uVar5,uVar20)" identifier (argument_list "(uVar8 - uVar5,uVar20)" ( (binary_expression "uVar8 - uVar5" identifier - identifier) , identifier )))))) ;) (expression_statement "this_01->field_0x19c = this_01->field_0x19c | 2;" (assignment_expression "this_01->field_0x19c = this_01->field_0x19c | 2" (field_expression "this_01->field_0x19c" identifier -> field_identifier) = (binary_expression "this_01->field_0x19c | 2" (field_expression "this_01->field_0x19c" identifier -> field_identifier) | number_literal)) ;) (expression_statement "*(uint *)((int)&this_01->paddr_ + 4) = uVar21;" (assignment_expression "*(uint *)((int)&this_01->paddr_ + 4) = uVar21" (pointer_expression "*(uint *)((int)&this_01->paddr_ + 4)" * (cast_expression "(uint *)((int)&this_01->paddr_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_01->paddr_ + 4)" ( (binary_expression "(int)&this_01->paddr_ + 4" (cast_expression "(int)&this_01->paddr_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_01->paddr_" & (field_expression "this_01->paddr_" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "iVar23 = uVar16 - (uVar13 < uVar22);" (assignment_expression "iVar23 = uVar16 - (uVar13 < uVar22)" identifier = (binary_expression "uVar16 - (uVar13 < uVar22)" identifier - (parenthesized_expression "(uVar13 < uVar22)" ( (binary_expression "uVar13 < uVar22" identifier < identifier) )))) ;) (if_statement "if (cVar9 != '\0') goto LAB_000887ba;" if (parenthesized_expression "(cVar9 != '\0')" ( (binary_expression "cVar9 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000887ba;" goto statement_identifier ;)) (if_statement "if (uVar13 - uVar22 == 0 && iVar23 == 0) goto LAB_0008878f;" if (parenthesized_expression "(uVar13 - uVar22 == 0 && iVar23 == 0)" ( (binary_expression "uVar13 - uVar22 == 0 && iVar23 == 0" (binary_expression "uVar13 - uVar22 == 0" (binary_expression "uVar13 - uVar22" identifier - identifier) == number_literal) && (binary_expression "iVar23 == 0" identifier == number_literal)) )) (goto_statement "goto LAB_0008878f;" goto statement_identifier ;)) (if_statement "if (this_01 == (Output_segment *)0x0) goto LAB_0008878f;" if (parenthesized_expression "(this_01 == (Output_segment *)0x0)" ( (binary_expression "this_01 == (Output_segment *)0x0" identifier == (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0008878f;" goto statement_identifier ;)) (expression_statement "od = (Output_data *)operator_new(0x2c);" (assignment_expression "od = (Output_data *)operator_new(0x2c)" identifier = (cast_expression "(Output_data *)operator_new(0x2c)" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x2c)" identifier (argument_list "(0x2c)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)&od->address_ = 0;" (assignment_expression "*(undefined4 *)&od->address_ = 0" (pointer_expression "*(undefined4 *)&od->address_" * (cast_expression "(undefined4 *)&od->address_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&od->address_" & (field_expression "od->address_" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(uint *)&od->data_size_ = uVar13 - uVar22;" (assignment_expression "*(uint *)&od->data_size_ = uVar13 - uVar22" (pointer_expression "*(uint *)&od->data_size_" * (cast_expression "(uint *)&od->data_size_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&od->data_size_" & (field_expression "od->data_size_" identifier -> field_identifier)))) = (binary_expression "uVar13 - uVar22" identifier - identifier)) ;) (expression_statement "bVar2 = od->field_0x1c;" (assignment_expression "bVar2 = od->field_0x1c" identifier = (field_expression "od->field_0x1c" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&od->address_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&od->address_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&od->address_ + 4)" * (cast_expression "(undefined4 *)((int)&od->address_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&od->address_ + 4)" ( (binary_expression "(int)&od->address_ + 4" (cast_expression "(int)&od->address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&od->address_" & (field_expression "od->address_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "od[1]._vptr_Output_data = (_func_int_varargs **)0x0;" (assignment_expression "od[1]._vptr_Output_data = (_func_int_varargs **)0x0" (field_expression "od[1]._vptr_Output_data" (subscript_expression "od[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_func_int_varargs **)0x0" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "*(undefined4 *)&od[1].address_ = 1;" (assignment_expression "*(undefined4 *)&od[1].address_ = 1" (pointer_expression "*(undefined4 *)&od[1].address_" * (cast_expression "(undefined4 *)&od[1].address_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&od[1].address_" & (field_expression "od[1].address_" (subscript_expression "od[1]" identifier [ number_literal ]) . field_identifier)))) = number_literal) ;) (expression_statement "od->field_0x1c = bVar2 & 0xe0 | 10;" (assignment_expression "od->field_0x1c = bVar2 & 0xe0 | 10" (field_expression "od->field_0x1c" identifier -> field_identifier) = (binary_expression "bVar2 & 0xe0 | 10" (binary_expression "bVar2 & 0xe0" identifier & number_literal) | number_literal)) ;) (expression_statement "*(undefined4 *)((int)&od[1].address_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&od[1].address_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&od[1].address_ + 4)" * (cast_expression "(undefined4 *)((int)&od[1].address_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&od[1].address_ + 4)" ( (binary_expression "(int)&od[1].address_ + 4" (cast_expression "(int)&od[1].address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&od[1].address_" & (field_expression "od[1].address_" (subscript_expression "od[1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)&od->data_size_ + 4) = iVar23;" (assignment_expression "*(int *)((int)&od->data_size_ + 4) = iVar23" (pointer_expression "*(int *)((int)&od->data_size_ + 4)" * (cast_expression "(int *)((int)&od->data_size_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&od->data_size_ + 4)" ( (binary_expression "(int)&od->data_size_ + 4" (cast_expression "(int)&od->data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&od->data_size_" & (field_expression "od->data_size_" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)&od->offset_ = 0xffffffff;" (assignment_expression "*(undefined4 *)&od->offset_ = 0xffffffff" (pointer_expression "*(undefined4 *)&od->offset_" * (cast_expression "(undefined4 *)&od->offset_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&od->offset_" & (field_expression "od->offset_" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&od->offset_ + 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)((int)&od->offset_ + 4) = 0xffffffff" (pointer_expression "*(undefined4 *)((int)&od->offset_ + 4)" * (cast_expression "(undefined4 *)((int)&od->offset_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&od->offset_ + 4)" ( (binary_expression "(int)&od->offset_ + 4" (cast_expression "(int)&od->offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&od->offset_" & (field_expression "od->offset_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "od->_vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2759db);" (assignment_expression "od->_vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2759db)" (field_expression "od->_vptr_Output_data" identifier -> field_identifier) = (cast_expression "(_func_int_varargs **)(unaff_EDI + 0x2759db)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x2759db)" ( (binary_expression "unaff_EDI + 0x2759db" identifier + number_literal) )))) ;) (labeled_statement "Output_segment::add_initial_output_data(this_01,od);" statement_identifier : (ERROR ":" :) (expression_statement "add_initial_output_data(this_01,od);" (call_expression "add_initial_output_data(this_01,od)" identifier (argument_list "(this_01,od)" ( identifier , identifier ))) ;)) (goto_statement "goto LAB_0008878f;" goto statement_identifier ;) })) })) (if_statement "if (cVar9 != '\0') goto LAB_00087f7a;" if (parenthesized_expression "(cVar9 != '\0')" ( (binary_expression "cVar9 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00087f7a;" goto statement_identifier ;)) (expression_statement "local_80 = (Output_segment *)0x0;" (assignment_expression "local_80 = (Output_segment *)0x0" identifier = (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00087f52:\n    if (pOVar17 != (Output_segment *)0x0) goto LAB_00087f5a;" statement_identifier : (if_statement "if (pOVar17 != (Output_segment *)0x0) goto LAB_00087f5a;" if (parenthesized_expression "(pOVar17 != (Output_segment *)0x0)" ( (binary_expression "pOVar17 != (Output_segment *)0x0" identifier != (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00087f5a;" goto statement_identifier ;))) (expression_statement "pSVar12 = this->script_options_;" (assignment_expression "pSVar12 = this->script_options_" identifier = (field_expression "this->script_options_" identifier -> field_identifier)) ;) (if_statement "if ((pSVar12->script_sections_).saw_sections_clause_ != false) goto LAB_00087f99;" if (parenthesized_expression "((pSVar12->script_sections_).saw_sections_clause_ != false)" ( (binary_expression "(pSVar12->script_sections_).saw_sections_clause_ != false" (field_expression "(pSVar12->script_sections_).saw_sections_clause_" (parenthesized_expression "(pSVar12->script_sections_)" ( (field_expression "pSVar12->script_sections_" identifier -> field_identifier) )) . field_identifier) != false) )) (goto_statement "goto LAB_00087f99;" goto statement_identifier ;)) (labeled_statement "LAB_00087fc3:\n    iVar15 = local_88;" statement_identifier : (expression_statement "iVar15 = local_88;" (assignment_expression "iVar15 = local_88" identifier = identifier) ;)) (expression_statement "shndx = 1;" (assignment_expression "shndx = 1" identifier = number_literal) ;) (if_statement "if (*(char *)(iVar23 + 0x318d) == '\0') {\n      oVar24 = set_segment_offsets(this,target,local_80,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          Relaxation_debug_check::read_sections(this->relaxation_debug_check_,&this->section_list_);\n        }\n        else {\n          Relaxation_debug_check::verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);\n        }\n        iVar23 = *(int *)pbVar1;\n        iVar18 = *(int *)(iVar23 + 8);\n        if (iVar18 == 0) goto LAB_000888c2;\n      }\n      off = oVar24;\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar18 + 0x3209) != '\0') &&\n         (pcVar14 = *(code **)(*(int *)target + 0x6c), pcVar14 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      oVar24 = set_relocatable_section_offsets(this,&local_94->super_Output_data,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      off = oVar24;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      cVar9 = (*pcVar14)(target);\n      if (cVar9 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar14 = *(code **)(*(int *)target + 0x6c);\n          if (pcVar14 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar9 = local_88 < 2;\n        }\n        local_88 = iVar15 + 1;\n        if (cVar9 != '\0') {\n          clean_up_after_relaxation(this);\n          goto LAB_00087e80;\n        }\n      }\n    }" if (parenthesized_expression "(*(char *)(iVar23 + 0x318d) == '\0')" ( (binary_expression "*(char *)(iVar23 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar23 + 0x318d)" * (cast_expression "(char *)(iVar23 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x318d)" ( (binary_expression "iVar23 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      oVar24 = set_segment_offsets(this,target,local_80,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          Relaxation_debug_check::read_sections(this->relaxation_debug_check_,&this->section_list_);\n        }\n        else {\n          Relaxation_debug_check::verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);\n        }\n        iVar23 = *(int *)pbVar1;\n        iVar18 = *(int *)(iVar23 + 8);\n        if (iVar18 == 0) goto LAB_000888c2;\n      }\n      off = oVar24;\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar18 + 0x3209) != '\0') &&\n         (pcVar14 = *(code **)(*(int *)target + 0x6c), pcVar14 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }" { (expression_statement "oVar24 = set_segment_offsets(this,target,local_80,&shndx);" (assignment_expression "oVar24 = set_segment_offsets(this,target,local_80,&shndx)" identifier = (call_expression "set_segment_offsets(this,target,local_80,&shndx)" identifier (argument_list "(this,target,local_80,&shndx)" ( identifier , identifier , identifier , (pointer_expression "&shndx" & identifier) )))) ;) (expression_statement "iVar23 = *(int *)pbVar1;" (assignment_expression "iVar23 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar18 = *(int *)(iVar23 + 8);" (assignment_expression "iVar18 = *(int *)(iVar23 + 8)" identifier = (pointer_expression "*(int *)(iVar23 + 8)" * (cast_expression "(int *)(iVar23 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 8)" ( (binary_expression "iVar23 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar18 == 0) goto LAB_000888c2;" if (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000888c2;" goto statement_identifier ;)) (labeled_statement "LAB_00087ff2:\n      if ((*(byte *)(iVar23 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          Relaxation_debug_check::read_sections(this->relaxation_debug_check_,&this->section_list_);\n        }\n        else {\n          Relaxation_debug_check::verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);\n        }\n        iVar23 = *(int *)pbVar1;\n        iVar18 = *(int *)(iVar23 + 8);\n        if (iVar18 == 0) goto LAB_000888c2;\n      }" statement_identifier : (if_statement "if ((*(byte *)(iVar23 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          Relaxation_debug_check::read_sections(this->relaxation_debug_check_,&this->section_list_);\n        }\n        else {\n          Relaxation_debug_check::verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);\n        }\n        iVar23 = *(int *)pbVar1;\n        iVar18 = *(int *)(iVar23 + 8);\n        if (iVar18 == 0) goto LAB_000888c2;\n      }" if (parenthesized_expression "((*(byte *)(iVar23 + 0x14) & 8) != 0)" ( (binary_expression "(*(byte *)(iVar23 + 0x14) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar23 + 0x14) & 8)" ( (binary_expression "*(byte *)(iVar23 + 0x14) & 8" (pointer_expression "*(byte *)(iVar23 + 0x14)" * (cast_expression "(byte *)(iVar23 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x14)" ( (binary_expression "iVar23 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (local_88 == 0) {\n          Relaxation_debug_check::read_sections(this->relaxation_debug_check_,&this->section_list_);\n        }\n        else {\n          Relaxation_debug_check::verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);\n        }\n        iVar23 = *(int *)pbVar1;\n        iVar18 = *(int *)(iVar23 + 8);\n        if (iVar18 == 0) goto LAB_000888c2;\n      }" { (if_statement "if (local_88 == 0) {\n          Relaxation_debug_check::read_sections(this->relaxation_debug_check_,&this->section_list_);\n        }\n        else {\n          Relaxation_debug_check::verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);\n        }" if (parenthesized_expression "(local_88 == 0)" ( (binary_expression "local_88 == 0" identifier == number_literal) )) (compound_statement "{\n          Relaxation_debug_check::read_sections(this->relaxation_debug_check_,&this->section_list_);\n        }" { (labeled_statement "Relaxation_debug_check::read_sections(this->relaxation_debug_check_,&this->section_list_);" statement_identifier : (ERROR ":" :) (expression_statement "read_sections(this->relaxation_debug_check_,&this->section_list_);" (call_expression "read_sections(this->relaxation_debug_check_,&this->section_list_)" identifier (argument_list "(this->relaxation_debug_check_,&this->section_list_)" ( (field_expression "this->relaxation_debug_check_" identifier -> field_identifier) , (pointer_expression "&this->section_list_" & (field_expression "this->section_list_" identifier -> field_identifier)) ))) ;)) }) (else_clause "else {\n          Relaxation_debug_check::verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);\n        }" else (compound_statement "{\n          Relaxation_debug_check::verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);\n        }" { (labeled_statement "Relaxation_debug_check::verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);" statement_identifier : (ERROR ":" :) (expression_statement "verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_);" (call_expression "verify_sections\n                    (this->relaxation_debug_check_,&this->section_list_)" identifier (argument_list "(this->relaxation_debug_check_,&this->section_list_)" ( (field_expression "this->relaxation_debug_check_" identifier -> field_identifier) , (pointer_expression "&this->section_list_" & (field_expression "this->section_list_" identifier -> field_identifier)) ))) ;)) }))) (expression_statement "iVar23 = *(int *)pbVar1;" (assignment_expression "iVar23 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar18 = *(int *)(iVar23 + 8);" (assignment_expression "iVar18 = *(int *)(iVar23 + 8)" identifier = (pointer_expression "*(int *)(iVar23 + 8)" * (cast_expression "(int *)(iVar23 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 8)" ( (binary_expression "iVar23 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar18 == 0) goto LAB_000888c2;" if (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000888c2;" goto statement_identifier ;)) }))) (expression_statement "off = oVar24;" (assignment_expression "off = oVar24" identifier = identifier) ;) (if_statement "if ((*(byte *)(iVar23 + 0x14) & 8) != 0) goto LAB_00088970;" if (parenthesized_expression "((*(byte *)(iVar23 + 0x14) & 8) != 0)" ( (binary_expression "(*(byte *)(iVar23 + 0x14) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar23 + 0x14) & 8)" ( (binary_expression "*(byte *)(iVar23 + 0x14) & 8" (pointer_expression "*(byte *)(iVar23 + 0x14)" * (cast_expression "(byte *)(iVar23 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x14)" ( (binary_expression "iVar23 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00088970;" goto statement_identifier ;)) (expression_statement "pcVar14 = *(code **)(*(int *)target + 0x68);" (assignment_expression "pcVar14 = *(code **)(*(int *)target + 0x68)" identifier = (pointer_expression "*(code **)(*(int *)target + 0x68)" * (cast_expression "(code **)(*(int *)target + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)target + 0x68)" ( (binary_expression "*(int *)target + 0x68" (pointer_expression "*(int *)target" * (cast_expression "(int *)target" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (pcVar14 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;" if (parenthesized_expression "(pcVar14 != (code *)(unaff_EDI + 0x1497))" ( (binary_expression "pcVar14 != (code *)(unaff_EDI + 0x1497)" identifier != (cast_expression "(code *)(unaff_EDI + 0x1497)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1497)" ( (binary_expression "unaff_EDI + 0x1497" identifier + number_literal) )))) )) (goto_statement "goto LAB_000888db;" goto statement_identifier ;)) (if_statement "if ((*(char *)(iVar18 + 0x3209) != '\0') &&\n         (pcVar14 = *(code **)(*(int *)target + 0x6c), pcVar14 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;" if (parenthesized_expression "((*(char *)(iVar18 + 0x3209) != '\0') &&\n         (pcVar14 = *(code **)(*(int *)target + 0x6c), pcVar14 != (code *)(unaff_EDI + 0x1147)))" ( (binary_expression "(*(char *)(iVar18 + 0x3209) != '\0') &&\n         (pcVar14 = *(code **)(*(int *)target + 0x6c), pcVar14 != (code *)(unaff_EDI + 0x1147))" (parenthesized_expression "(*(char *)(iVar18 + 0x3209) != '\0')" ( (binary_expression "*(char *)(iVar18 + 0x3209) != '\0'" (pointer_expression "*(char *)(iVar18 + 0x3209)" * (cast_expression "(char *)(iVar18 + 0x3209)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3209)" ( (binary_expression "iVar18 + 0x3209" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(pcVar14 = *(code **)(*(int *)target + 0x6c), pcVar14 != (code *)(unaff_EDI + 0x1147))" ( (comma_expression "pcVar14 = *(code **)(*(int *)target + 0x6c), pcVar14 != (code *)(unaff_EDI + 0x1147)" (assignment_expression "pcVar14 = *(code **)(*(int *)target + 0x6c)" identifier = (pointer_expression "*(code **)(*(int *)target + 0x6c)" * (cast_expression "(code **)(*(int *)target + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)target + 0x6c)" ( (binary_expression "*(int *)target + 0x6c" (pointer_expression "*(int *)target" * (cast_expression "(int *)target" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) , (binary_expression "pcVar14 != (code *)(unaff_EDI + 0x1147)" identifier != (cast_expression "(code *)(unaff_EDI + 0x1147)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1147)" ( (binary_expression "unaff_EDI + 0x1147" identifier + number_literal) ))))) ))) )) (goto_statement "goto LAB_00088910;" goto statement_identifier ;)) }) (else_clause "else {\n      oVar24 = set_relocatable_section_offsets(this,&local_94->super_Output_data,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      off = oVar24;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      cVar9 = (*pcVar14)(target);\n      if (cVar9 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar14 = *(code **)(*(int *)target + 0x6c);\n          if (pcVar14 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar9 = local_88 < 2;\n        }\n        local_88 = iVar15 + 1;\n        if (cVar9 != '\0') {\n          clean_up_after_relaxation(this);\n          goto LAB_00087e80;\n        }\n      }\n    }" else (compound_statement "{\n      oVar24 = set_relocatable_section_offsets(this,&local_94->super_Output_data,&shndx);\n      iVar23 = *(int *)pbVar1;\n      iVar18 = *(int *)(iVar23 + 8);\n      if (iVar18 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      off = oVar24;\n      pcVar14 = *(code **)(*(int *)target + 0x68);\n      if (pcVar14 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      cVar9 = (*pcVar14)(target);\n      if (cVar9 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar14 = *(code **)(*(int *)target + 0x6c);\n          if (pcVar14 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar9 = local_88 < 2;\n        }\n        local_88 = iVar15 + 1;\n        if (cVar9 != '\0') {\n          clean_up_after_relaxation(this);\n          goto LAB_00087e80;\n        }\n      }\n    }" { (expression_statement "oVar24 = set_relocatable_section_offsets(this,&local_94->super_Output_data,&shndx);" (assignment_expression "oVar24 = set_relocatable_section_offsets(this,&local_94->super_Output_data,&shndx)" identifier = (call_expression "set_relocatable_section_offsets(this,&local_94->super_Output_data,&shndx)" identifier (argument_list "(this,&local_94->super_Output_data,&shndx)" ( identifier , (pointer_expression "&local_94->super_Output_data" & (field_expression "local_94->super_Output_data" identifier -> field_identifier)) , (pointer_expression "&shndx" & identifier) )))) ;) (expression_statement "iVar23 = *(int *)pbVar1;" (assignment_expression "iVar23 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar18 = *(int *)(iVar23 + 8);" (assignment_expression "iVar18 = *(int *)(iVar23 + 8)" identifier = (pointer_expression "*(int *)(iVar23 + 8)" * (cast_expression "(int *)(iVar23 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 8)" ( (binary_expression "iVar23 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar18 != 0) goto LAB_00087ff2;" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00087ff2;" goto statement_identifier ;)) (labeled_statement "LAB_000888c2:\n      off = oVar24;" statement_identifier : (expression_statement "off = oVar24;" (assignment_expression "off = oVar24" identifier = identifier) ;)) (expression_statement "pcVar14 = *(code **)(*(int *)target + 0x68);" (assignment_expression "pcVar14 = *(code **)(*(int *)target + 0x68)" identifier = (pointer_expression "*(code **)(*(int *)target + 0x68)" * (cast_expression "(code **)(*(int *)target + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)target + 0x68)" ( (binary_expression "*(int *)target + 0x68" (pointer_expression "*(int *)target" * (cast_expression "(int *)target" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (pcVar14 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;" if (parenthesized_expression "(pcVar14 == (code *)(unaff_EDI + 0x1497))" ( (binary_expression "pcVar14 == (code *)(unaff_EDI + 0x1497)" identifier == (cast_expression "(code *)(unaff_EDI + 0x1497)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1497)" ( (binary_expression "unaff_EDI + 0x1497" identifier + number_literal) )))) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) (labeled_statement "LAB_000888db:\n      cVar9 = (*pcVar14)(target);" statement_identifier : (expression_statement "cVar9 = (*pcVar14)(target);" (assignment_expression "cVar9 = (*pcVar14)(target)" identifier = (call_expression "(*pcVar14)(target)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(target)" ( identifier )))) ;)) (if_statement "if (cVar9 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar14 = *(code **)(*(int *)target + 0x6c);\n          if (pcVar14 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar9 = local_88 < 2;\n        }\n        local_88 = iVar15 + 1;\n        if (cVar9 != '\0') {\n          clean_up_after_relaxation(this);\n          goto LAB_00087e80;\n        }\n      }" if (parenthesized_expression "(cVar9 != '\0')" ( (binary_expression "cVar9 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar14 = *(code **)(*(int *)target + 0x6c);\n          if (pcVar14 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar9 = local_88 < 2;\n        }\n        local_88 = iVar15 + 1;\n        if (cVar9 != '\0') {\n          clean_up_after_relaxation(this);\n          goto LAB_00087e80;\n        }\n      }" { (if_statement "if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar14 = *(code **)(*(int *)target + 0x6c);\n          if (pcVar14 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar9 = local_88 < 2;\n        }" if (parenthesized_expression "((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0))" ( (binary_expression "(*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)" (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) || (parenthesized_expression "((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)" ( (binary_expression "(*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0" (parenthesized_expression "(*(byte *)(*(int *)pbVar1 + 0x14) & 8)" ( (binary_expression "*(byte *)(*(int *)pbVar1 + 0x14) & 8" (pointer_expression "*(byte *)(*(int *)pbVar1 + 0x14)" * (cast_expression "(byte *)(*(int *)pbVar1 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0x14)" ( (binary_expression "*(int *)pbVar1 + 0x14" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          pcVar14 = *(code **)(*(int *)target + 0x6c);\n          if (pcVar14 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this);\n        }" { (expression_statement "pcVar14 = *(code **)(*(int *)target + 0x6c);" (assignment_expression "pcVar14 = *(code **)(*(int *)target + 0x6c)" identifier = (pointer_expression "*(code **)(*(int *)target + 0x6c)" * (cast_expression "(code **)(*(int *)target + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)target + 0x6c)" ( (binary_expression "*(int *)target + 0x6c" (pointer_expression "*(int *)target" * (cast_expression "(int *)target" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (pcVar14 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;" if (parenthesized_expression "(pcVar14 == (code *)(unaff_EDI + 0x1147))" ( (binary_expression "pcVar14 == (code *)(unaff_EDI + 0x1147)" identifier == (cast_expression "(code *)(unaff_EDI + 0x1147)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1147)" ( (binary_expression "unaff_EDI + 0x1147" identifier + number_literal) )))) )) (goto_statement "goto LAB_00088098;" goto statement_identifier ;)) (labeled_statement "LAB_00088910:\n          local_88 = local_88 + 1;" statement_identifier : (expression_statement "local_88 = local_88 + 1;" (assignment_expression "local_88 = local_88 + 1" identifier = (binary_expression "local_88 + 1" identifier + number_literal)) ;)) (expression_statement "cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this);" (assignment_expression "cVar9 = (*pcVar14)(target,local_88,input_objects,symtab,this)" identifier = (call_expression "(*pcVar14)(target,local_88,input_objects,symtab,this)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(target,local_88,input_objects,symtab,this)" ( identifier , identifier , identifier , identifier , identifier )))) ;) }) (else_clause "else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar9 = local_88 < 2;\n        }" else (compound_statement "{\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar9 = local_88 < 2;\n        }" { (labeled_statement "LAB_00088970:\n          local_88 = local_88 + 1;" statement_identifier : (expression_statement "local_88 = local_88 + 1;" (assignment_expression "local_88 = local_88 + 1" identifier = (binary_expression "local_88 + 1" identifier + number_literal)) ;)) (expression_statement "cVar9 = local_88 < 2;" (assignment_expression "cVar9 = local_88 < 2" identifier = (binary_expression "local_88 < 2" identifier < number_literal)) ;) }))) (expression_statement "local_88 = iVar15 + 1;" (assignment_expression "local_88 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (if_statement "if (cVar9 != '\0') {\n          clean_up_after_relaxation(this);\n          goto LAB_00087e80;\n        }" if (parenthesized_expression "(cVar9 != '\0')" ( (binary_expression "cVar9 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          clean_up_after_relaxation(this);\n          goto LAB_00087e80;\n        }" { (expression_statement "clean_up_after_relaxation(this);" (call_expression "clean_up_after_relaxation(this)" identifier (argument_list "(this)" ( identifier ))) ;) (goto_statement "goto LAB_00087e80;" goto statement_identifier ;) })) })) }))) (labeled_statement "LAB_00088098:\n    local_88 = iVar15 + 1;" statement_identifier : (expression_statement "local_88 = iVar15 + 1;" (assignment_expression "local_88 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;)) (ERROR "this_02 = Symbol_table::" (assignment_expression "this_02 = Symbol_table" identifier = identifier) : :) (expression_statement "lookup(symtab,(char *)(unaff_EDI + 0x19b53f),(char *)0x0);" (call_expression "lookup(symtab,(char *)(unaff_EDI + 0x19b53f),(char *)0x0)" identifier (argument_list "(symtab,(char *)(unaff_EDI + 0x19b53f),(char *)0x0)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x19b53f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x19b53f)" ( (binary_expression "unaff_EDI + 0x19b53f" identifier + number_literal) ))) , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (if_statement "if ((this_02 != (Symbol *)0x0) && ((this_02->field_0x2c & 4) != 0)) {\n      if (local_80 == (Output_segment *)0x0) {\n        Symbol::set_undefined(this_02);\n      }\n      else {\n        Symbol::set_output_segment(this_02,local_80,SEGMENT_START);\n      }\n    }" if (parenthesized_expression "((this_02 != (Symbol *)0x0) && ((this_02->field_0x2c & 4) != 0))" ( (binary_expression "(this_02 != (Symbol *)0x0) && ((this_02->field_0x2c & 4) != 0)" (parenthesized_expression "(this_02 != (Symbol *)0x0)" ( (binary_expression "this_02 != (Symbol *)0x0" identifier != (cast_expression "(Symbol *)0x0" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((this_02->field_0x2c & 4) != 0)" ( (binary_expression "(this_02->field_0x2c & 4) != 0" (parenthesized_expression "(this_02->field_0x2c & 4)" ( (binary_expression "this_02->field_0x2c & 4" (field_expression "this_02->field_0x2c" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      if (local_80 == (Output_segment *)0x0) {\n        Symbol::set_undefined(this_02);\n      }\n      else {\n        Symbol::set_output_segment(this_02,local_80,SEGMENT_START);\n      }\n    }" { (if_statement "if (local_80 == (Output_segment *)0x0) {\n        Symbol::set_undefined(this_02);\n      }\n      else {\n        Symbol::set_output_segment(this_02,local_80,SEGMENT_START);\n      }" if (parenthesized_expression "(local_80 == (Output_segment *)0x0)" ( (binary_expression "local_80 == (Output_segment *)0x0" identifier == (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        Symbol::set_undefined(this_02);\n      }" { (labeled_statement "Symbol::set_undefined(this_02);" statement_identifier : (ERROR ":" :) (expression_statement "set_undefined(this_02);" (call_expression "set_undefined(this_02)" identifier (argument_list "(this_02)" ( identifier ))) ;)) }) (else_clause "else {\n        Symbol::set_output_segment(this_02,local_80,SEGMENT_START);\n      }" else (compound_statement "{\n        Symbol::set_output_segment(this_02,local_80,SEGMENT_START);\n      }" { (labeled_statement "Symbol::set_output_segment(this_02,local_80,SEGMENT_START);" statement_identifier : (ERROR ":" :) (expression_statement "set_output_segment(this_02,local_80,SEGMENT_START);" (call_expression "set_output_segment(this_02,local_80,SEGMENT_START)" identifier (argument_list "(this_02,local_80,SEGMENT_START)" ( identifier , identifier , identifier ))) ;)) }))) })) (expression_statement "off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);" (assignment_expression "off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS)" identifier = (call_expression "set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS)" identifier (argument_list "(this,off,BEFORE_INPUT_SECTIONS_PASS)" ( identifier , identifier , identifier )))) ;) (expression_statement "ppOVar19 = (this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_start;" (field_expression "ppOVar19 = (this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_start" (field_expression "ppOVar19 = (this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl" (binary_expression "ppOVar19 = (this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "ppOVar19 = (this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "ppOVar19 = (this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std" (assignment_expression "ppOVar19 = (this->unattached_section_list_).\n               super__Vector_base<gold" identifier = (binary_expression "(this->unattached_section_list_).\n               super__Vector_base<gold" (field_expression "(this->unattached_section_list_).\n               super__Vector_base" (parenthesized_expression "(this->unattached_section_list_)" ( (field_expression "this->unattached_section_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "uVar22 = shndx;" (assignment_expression "uVar22 = shndx" identifier = identifier) ;) (if_statement "if ((this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish != ppOVar19) {\n      do {\n        while (pOVar11 = *ppOVar19, pOVar11->out_shndx_ == 0xffffffff) {\n          p_Var3 = (pOVar11->super_Output_data)._vptr_Output_data[0xc];\n          if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n            pOVar11->out_shndx_ = uVar22;\n          }\n          else {\n            (*p_Var3)(pOVar11,uVar22);\n          }\n          uVar22 = uVar22 + 1;\n          ppOVar19 = ppOVar19 + 1;\n          if ((this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish == ppOVar19) goto LAB_00088157;\n        }\n        ppOVar19 = ppOVar19 + 1;\n      } while ((this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish != ppOVar19);\n    }" if (parenthesized_expression "((this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish != ppOVar19)" ( (binary_expression "(this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish != ppOVar19" (field_expression "(this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish" (field_expression "(this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "(this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std" (binary_expression "(this->unattached_section_list_).\n        super__Vector_base<gold" (field_expression "(this->unattached_section_list_).\n        super__Vector_base" (parenthesized_expression "(this->unattached_section_list_)" ( (field_expression "this->unattached_section_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) (compound_statement "{\n      do {\n        while (pOVar11 = *ppOVar19, pOVar11->out_shndx_ == 0xffffffff) {\n          p_Var3 = (pOVar11->super_Output_data)._vptr_Output_data[0xc];\n          if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n            pOVar11->out_shndx_ = uVar22;\n          }\n          else {\n            (*p_Var3)(pOVar11,uVar22);\n          }\n          uVar22 = uVar22 + 1;\n          ppOVar19 = ppOVar19 + 1;\n          if ((this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish == ppOVar19) goto LAB_00088157;\n        }\n        ppOVar19 = ppOVar19 + 1;\n      } while ((this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish != ppOVar19);\n    }" { (do_statement "do {\n        while (pOVar11 = *ppOVar19, pOVar11->out_shndx_ == 0xffffffff) {\n          p_Var3 = (pOVar11->super_Output_data)._vptr_Output_data[0xc];\n          if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n            pOVar11->out_shndx_ = uVar22;\n          }\n          else {\n            (*p_Var3)(pOVar11,uVar22);\n          }\n          uVar22 = uVar22 + 1;\n          ppOVar19 = ppOVar19 + 1;\n          if ((this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish == ppOVar19) goto LAB_00088157;\n        }\n        ppOVar19 = ppOVar19 + 1;\n      } while ((this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish != ppOVar19);" do (compound_statement "{\n        while (pOVar11 = *ppOVar19, pOVar11->out_shndx_ == 0xffffffff) {\n          p_Var3 = (pOVar11->super_Output_data)._vptr_Output_data[0xc];\n          if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n            pOVar11->out_shndx_ = uVar22;\n          }\n          else {\n            (*p_Var3)(pOVar11,uVar22);\n          }\n          uVar22 = uVar22 + 1;\n          ppOVar19 = ppOVar19 + 1;\n          if ((this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish == ppOVar19) goto LAB_00088157;\n        }\n        ppOVar19 = ppOVar19 + 1;\n      }" { (while_statement "while (pOVar11 = *ppOVar19, pOVar11->out_shndx_ == 0xffffffff) {\n          p_Var3 = (pOVar11->super_Output_data)._vptr_Output_data[0xc];\n          if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n            pOVar11->out_shndx_ = uVar22;\n          }\n          else {\n            (*p_Var3)(pOVar11,uVar22);\n          }\n          uVar22 = uVar22 + 1;\n          ppOVar19 = ppOVar19 + 1;\n          if ((this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish == ppOVar19) goto LAB_00088157;\n        }" while (parenthesized_expression "(pOVar11 = *ppOVar19, pOVar11->out_shndx_ == 0xffffffff)" ( (comma_expression "pOVar11 = *ppOVar19, pOVar11->out_shndx_ == 0xffffffff" (assignment_expression "pOVar11 = *ppOVar19" identifier = (pointer_expression "*ppOVar19" * identifier)) , (binary_expression "pOVar11->out_shndx_ == 0xffffffff" (field_expression "pOVar11->out_shndx_" identifier -> field_identifier) == number_literal)) )) (compound_statement "{\n          p_Var3 = (pOVar11->super_Output_data)._vptr_Output_data[0xc];\n          if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n            pOVar11->out_shndx_ = uVar22;\n          }\n          else {\n            (*p_Var3)(pOVar11,uVar22);\n          }\n          uVar22 = uVar22 + 1;\n          ppOVar19 = ppOVar19 + 1;\n          if ((this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish == ppOVar19) goto LAB_00088157;\n        }" { (expression_statement "p_Var3 = (pOVar11->super_Output_data)._vptr_Output_data[0xc];" (assignment_expression "p_Var3 = (pOVar11->super_Output_data)._vptr_Output_data[0xc]" identifier = (subscript_expression "(pOVar11->super_Output_data)._vptr_Output_data[0xc]" (field_expression "(pOVar11->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar11->super_Output_data)" ( (field_expression "pOVar11->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n            pOVar11->out_shndx_ = uVar22;\n          }\n          else {\n            (*p_Var3)(pOVar11,uVar22);\n          }" if (parenthesized_expression "(p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447))" ( (binary_expression "p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)" identifier == (cast_expression "(_func_int_varargs *)(unaff_EDI + 0x1447)" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1447)" ( (binary_expression "unaff_EDI + 0x1447" identifier + number_literal) )))) )) (compound_statement "{\n            pOVar11->out_shndx_ = uVar22;\n          }" { (expression_statement "pOVar11->out_shndx_ = uVar22;" (assignment_expression "pOVar11->out_shndx_ = uVar22" (field_expression "pOVar11->out_shndx_" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n            (*p_Var3)(pOVar11,uVar22);\n          }" else (compound_statement "{\n            (*p_Var3)(pOVar11,uVar22);\n          }" { (expression_statement "(*p_Var3)(pOVar11,uVar22);" (call_expression "(*p_Var3)(pOVar11,uVar22)" (parenthesized_expression "(*p_Var3)" ( (pointer_expression "*p_Var3" * identifier) )) (argument_list "(pOVar11,uVar22)" ( identifier , identifier ))) ;) }))) (expression_statement "uVar22 = uVar22 + 1;" (assignment_expression "uVar22 = uVar22 + 1" identifier = (binary_expression "uVar22 + 1" identifier + number_literal)) ;) (expression_statement "ppOVar19 = ppOVar19 + 1;" (assignment_expression "ppOVar19 = ppOVar19 + 1" identifier = (binary_expression "ppOVar19 + 1" identifier + number_literal)) ;) (if_statement "if ((this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish == ppOVar19) goto LAB_00088157;" if (parenthesized_expression "((this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish == ppOVar19)" ( (binary_expression "(this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish == ppOVar19" (field_expression "(this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_finish" (field_expression "(this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl" (binary_expression "(this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(this->unattached_section_list_).\n              super__Vector_base<gold::Output_section*,_std" (binary_expression "(this->unattached_section_list_).\n              super__Vector_base<gold" (field_expression "(this->unattached_section_list_).\n              super__Vector_base" (parenthesized_expression "(this->unattached_section_list_)" ( (field_expression "this->unattached_section_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) == identifier) )) (goto_statement "goto LAB_00088157;" goto statement_identifier ;)) })) (expression_statement "ppOVar19 = ppOVar19 + 1;" (assignment_expression "ppOVar19 = ppOVar19 + 1" identifier = (binary_expression "ppOVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish != ppOVar19)" ( (binary_expression "(this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish != ppOVar19" (field_expression "(this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish" (field_expression "(this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl" (binary_expression "(this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(this->unattached_section_list_).\n               super__Vector_base<gold::Output_section*,_std" (binary_expression "(this->unattached_section_list_).\n               super__Vector_base<gold" (field_expression "(this->unattached_section_list_).\n               super__Vector_base" (parenthesized_expression "(this->unattached_section_list_)" ( (field_expression "this->unattached_section_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) ;) })) (labeled_statement "LAB_00088157:\n    shndx = uVar22;" statement_identifier : (expression_statement "shndx = uVar22;" (assignment_expression "shndx = uVar22" identifier = identifier) ;)) (expression_statement "create_symtab_sections(this,input_objects,symtab,uVar22,(off_t *)local_b0,local_dynamic_count);" (call_expression "create_symtab_sections(this,input_objects,symtab,uVar22,(off_t *)local_b0,local_dynamic_count)" identifier (argument_list "(this,input_objects,symtab,uVar22,(off_t *)local_b0,local_dynamic_count)" ( identifier , identifier , identifier , identifier , (cast_expression "(off_t *)local_b0" ( (type_descriptor "off_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (if_statement "if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        assign_local_dynsym_offsets(this,input_objects);\n      }\n      Script_options::finalize_symbols(this->script_options_,symtab,this);\n      if (this->incremental_inputs_ != (Incremental_inputs *)0x0) {\n        Incremental_inputs::finalize(this->incremental_inputs_);\n        create_incremental_info_sections(this,symtab);\n      }\n      pOVar11 = create_shstrtab(this);\n      off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);\n      ppOVar19 = (this->unattached_section_list_).\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                 _M_impl._M_start;\n      uVar22 = shndx;\n      if (ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish) goto LAB_00088259;\n      goto LAB_0008822e;\n    }" if (parenthesized_expression "(*(char *)(*(int *)pbVar1 + 0x10) != '\0')" ( (binary_expression "*(char *)(*(int *)pbVar1 + 0x10) != '\0'" (pointer_expression "*(char *)(*(int *)pbVar1 + 0x10)" * (cast_expression "(char *)(*(int *)pbVar1 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0x10)" ( (binary_expression "*(int *)pbVar1 + 0x10" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        assign_local_dynsym_offsets(this,input_objects);\n      }\n      Script_options::finalize_symbols(this->script_options_,symtab,this);\n      if (this->incremental_inputs_ != (Incremental_inputs *)0x0) {\n        Incremental_inputs::finalize(this->incremental_inputs_);\n        create_incremental_info_sections(this,symtab);\n      }\n      pOVar11 = create_shstrtab(this);\n      off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);\n      ppOVar19 = (this->unattached_section_list_).\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                 _M_impl._M_start;\n      uVar22 = shndx;\n      if (ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish) goto LAB_00088259;\n      goto LAB_0008822e;\n    }" { (if_statement "if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        assign_local_dynsym_offsets(this,input_objects);\n      }" if (parenthesized_expression "(*(char *)(*(int *)pbVar1 + 0x11) == '\0')" ( (binary_expression "*(char *)(*(int *)pbVar1 + 0x11) == '\0'" (pointer_expression "*(char *)(*(int *)pbVar1 + 0x11)" * (cast_expression "(char *)(*(int *)pbVar1 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0x11)" ( (binary_expression "*(int *)pbVar1 + 0x11" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        assign_local_dynsym_offsets(this,input_objects);\n      }" { (expression_statement "assign_local_dynsym_offsets(this,input_objects);" (call_expression "assign_local_dynsym_offsets(this,input_objects)" identifier (argument_list "(this,input_objects)" ( identifier , identifier ))) ;) })) (labeled_statement "Script_options::finalize_symbols(this->script_options_,symtab,this);" statement_identifier : (ERROR ":" :) (expression_statement "finalize_symbols(this->script_options_,symtab,this);" (call_expression "finalize_symbols(this->script_options_,symtab,this)" identifier (argument_list "(this->script_options_,symtab,this)" ( (field_expression "this->script_options_" identifier -> field_identifier) , identifier , identifier ))) ;)) (if_statement "if (this->incremental_inputs_ != (Incremental_inputs *)0x0) {\n        Incremental_inputs::finalize(this->incremental_inputs_);\n        create_incremental_info_sections(this,symtab);\n      }" if (parenthesized_expression "(this->incremental_inputs_ != (Incremental_inputs *)0x0)" ( (binary_expression "this->incremental_inputs_ != (Incremental_inputs *)0x0" (field_expression "this->incremental_inputs_" identifier -> field_identifier) != (cast_expression "(Incremental_inputs *)0x0" ( (type_descriptor "Incremental_inputs *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        Incremental_inputs::finalize(this->incremental_inputs_);\n        create_incremental_info_sections(this,symtab);\n      }" { (labeled_statement "Incremental_inputs::finalize(this->incremental_inputs_);" statement_identifier : (ERROR ":" :) (expression_statement "finalize(this->incremental_inputs_);" (call_expression "finalize(this->incremental_inputs_)" identifier (argument_list "(this->incremental_inputs_)" ( (field_expression "this->incremental_inputs_" identifier -> field_identifier) ))) ;)) (expression_statement "create_incremental_info_sections(this,symtab);" (call_expression "create_incremental_info_sections(this,symtab)" identifier (argument_list "(this,symtab)" ( identifier , identifier ))) ;) })) (expression_statement "pOVar11 = create_shstrtab(this);" (assignment_expression "pOVar11 = create_shstrtab(this)" identifier = (call_expression "create_shstrtab(this)" identifier (argument_list "(this)" ( identifier )))) ;) (expression_statement "off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS);" (assignment_expression "off = set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS)" identifier = (call_expression "set_section_offsets(this,off,BEFORE_INPUT_SECTIONS_PASS)" identifier (argument_list "(this,off,BEFORE_INPUT_SECTIONS_PASS)" ( identifier , identifier , identifier )))) ;) (expression_statement "ppOVar19 = (this->unattached_section_list_).\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                 _M_impl._M_start;" (field_expression "ppOVar19 = (this->unattached_section_list_).\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                 _M_impl._M_start" (field_expression "ppOVar19 = (this->unattached_section_list_).\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                 _M_impl" (binary_expression "ppOVar19 = (this->unattached_section_list_).\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "ppOVar19 = (this->unattached_section_list_).\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "ppOVar19 = (this->unattached_section_list_).\n                 super__Vector_base<gold::Output_section*,_std" (assignment_expression "ppOVar19 = (this->unattached_section_list_).\n                 super__Vector_base<gold" identifier = (binary_expression "(this->unattached_section_list_).\n                 super__Vector_base<gold" (field_expression "(this->unattached_section_list_).\n                 super__Vector_base" (parenthesized_expression "(this->unattached_section_list_)" ( (field_expression "this->unattached_section_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "uVar22 = shndx;" (assignment_expression "uVar22 = shndx" identifier = identifier) ;) (if_statement "if (ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish) goto LAB_00088259;" if (parenthesized_expression "(ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish)" ( (field_expression "ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish" (field_expression "ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold::Output_section*,_std" (binary_expression "ppOVar19 ==\n          (this->unattached_section_list_).\n          super__Vector_base<gold" identifier == (binary_expression "(this->unattached_section_list_).\n          super__Vector_base<gold" (field_expression "(this->unattached_section_list_).\n          super__Vector_base" (parenthesized_expression "(this->unattached_section_list_)" ( (field_expression "this->unattached_section_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (goto_statement "goto LAB_00088259;" goto statement_identifier ;)) (goto_statement "goto LAB_0008822e;" goto statement_identifier ;) })) (labeled_statement "LAB_00088c31:\n    cVar9 = Parameters::doing_static_link(in_stack_ffffff34,in_stack_ffffff38);" statement_identifier : (ERROR "cVar9 = Parameters::" (assignment_expression "cVar9 = Parameters" identifier = identifier) : :) (expression_statement "doing_static_link(in_stack_ffffff34,in_stack_ffffff38);" (call_expression "doing_static_link(in_stack_ffffff34,in_stack_ffffff38)" identifier (argument_list "(in_stack_ffffff34,in_stack_ffffff38)" ( identifier , identifier ))) ;)) (expression_statement "iVar23 = extraout_ECX;" (assignment_expression "iVar23 = extraout_ECX" identifier = identifier) ;) (expression_statement "pOVar17 = local_90;" (assignment_expression "pOVar17 = local_90" identifier = identifier) ;) (labeled_statement "LAB_00087f2e:\n    if (cVar9 == '\0') {\n      local_80 = (Output_segment *)0x0;\nLAB_00087f39:\n      if (local_8c == (Output_segment_headers *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f));\n      }\n      if (local_80 == (Output_segment *)0x0) goto LAB_00087f52;\nLAB_0008878f:\n      Output_segment::add_initial_output_data(local_80,&local_8c->super_Output_data);\n      if (pOVar17 != (Output_segment *)0x0) {\nLAB_00087f5a:\n        Output_segment::add_initial_output_data(pOVar17,&local_8c->super_Output_data);\n        if (local_80 == (Output_segment *)0x0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      Output_segment::add_initial_output_data(local_80,&local_94->super_Output_data);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = (Output_segment *)0x0;\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }" statement_identifier : (if_statement "if (cVar9 == '\0') {\n      local_80 = (Output_segment *)0x0;\nLAB_00087f39:\n      if (local_8c == (Output_segment_headers *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f));\n      }\n      if (local_80 == (Output_segment *)0x0) goto LAB_00087f52;\nLAB_0008878f:\n      Output_segment::add_initial_output_data(local_80,&local_8c->super_Output_data);\n      if (pOVar17 != (Output_segment *)0x0) {\nLAB_00087f5a:\n        Output_segment::add_initial_output_data(pOVar17,&local_8c->super_Output_data);\n        if (local_80 == (Output_segment *)0x0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      Output_segment::add_initial_output_data(local_80,&local_94->super_Output_data);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = (Output_segment *)0x0;\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }" if (parenthesized_expression "(cVar9 == '\0')" ( (binary_expression "cVar9 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_80 = (Output_segment *)0x0;\nLAB_00087f39:\n      if (local_8c == (Output_segment_headers *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f));\n      }\n      if (local_80 == (Output_segment *)0x0) goto LAB_00087f52;\nLAB_0008878f:\n      Output_segment::add_initial_output_data(local_80,&local_8c->super_Output_data);\n      if (pOVar17 != (Output_segment *)0x0) {\nLAB_00087f5a:\n        Output_segment::add_initial_output_data(pOVar17,&local_8c->super_Output_data);\n        if (local_80 == (Output_segment *)0x0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      Output_segment::add_initial_output_data(local_80,&local_94->super_Output_data);\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }" { (expression_statement "local_80 = (Output_segment *)0x0;" (assignment_expression "local_80 = (Output_segment *)0x0" identifier = (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00087f39:\n      if (local_8c == (Output_segment_headers *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f));\n      }" statement_identifier : (if_statement "if (local_8c == (Output_segment_headers *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f));\n      }" if (parenthesized_expression "(local_8c == (Output_segment_headers *)0x0)" ( (binary_expression "local_8c == (Output_segment_headers *)0x0" identifier == (cast_expression "(Output_segment_headers *)0x0" ( (type_descriptor "Output_segment_headers *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f));\n      }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f))" identifier (argument_list "((char *)(unaff_EDI + 0x19b1cf),0xb0f,(char *)(unaff_EDI + 0x19c44f))" ( (cast_expression "(char *)(unaff_EDI + 0x19b1cf)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x19b1cf)" ( (binary_expression "unaff_EDI + 0x19b1cf" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x19c44f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x19c44f)" ( (binary_expression "unaff_EDI + 0x19c44f" identifier + number_literal) ))) ))) ;) }))) (if_statement "if (local_80 == (Output_segment *)0x0) goto LAB_00087f52;" if (parenthesized_expression "(local_80 == (Output_segment *)0x0)" ( (binary_expression "local_80 == (Output_segment *)0x0" identifier == (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00087f52;" goto statement_identifier ;)) (labeled_statement "LAB_0008878f:\n      Output_segment::add_initial_output_data(local_80,&local_8c->super_Output_data);" statement_identifier : (labeled_statement "Output_segment::add_initial_output_data(local_80,&local_8c->super_Output_data);" statement_identifier : (ERROR ":" :) (expression_statement "add_initial_output_data(local_80,&local_8c->super_Output_data);" (call_expression "add_initial_output_data(local_80,&local_8c->super_Output_data)" identifier (argument_list "(local_80,&local_8c->super_Output_data)" ( identifier , (pointer_expression "&local_8c->super_Output_data" & (field_expression "local_8c->super_Output_data" identifier -> field_identifier)) ))) ;))) (if_statement "if (pOVar17 != (Output_segment *)0x0) {\nLAB_00087f5a:\n        Output_segment::add_initial_output_data(pOVar17,&local_8c->super_Output_data);\n        if (local_80 == (Output_segment *)0x0) goto LAB_00087f7a;\n      }" if (parenthesized_expression "(pOVar17 != (Output_segment *)0x0)" ( (binary_expression "pOVar17 != (Output_segment *)0x0" identifier != (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00087f5a:\n        Output_segment::add_initial_output_data(pOVar17,&local_8c->super_Output_data);\n        if (local_80 == (Output_segment *)0x0) goto LAB_00087f7a;\n      }" { (labeled_statement "LAB_00087f5a:\n        Output_segment::add_initial_output_data(pOVar17,&local_8c->super_Output_data);" statement_identifier : (labeled_statement "Output_segment::add_initial_output_data(pOVar17,&local_8c->super_Output_data);" statement_identifier : (ERROR ":" :) (expression_statement "add_initial_output_data(pOVar17,&local_8c->super_Output_data);" (call_expression "add_initial_output_data(pOVar17,&local_8c->super_Output_data)" identifier (argument_list "(pOVar17,&local_8c->super_Output_data)" ( identifier , (pointer_expression "&local_8c->super_Output_data" & (field_expression "local_8c->super_Output_data" identifier -> field_identifier)) ))) ;))) (if_statement "if (local_80 == (Output_segment *)0x0) goto LAB_00087f7a;" if (parenthesized_expression "(local_80 == (Output_segment *)0x0)" ( (binary_expression "local_80 == (Output_segment *)0x0" identifier == (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00087f7a;" goto statement_identifier ;)) })) (labeled_statement "LAB_000887ba:\n      Output_segment::add_initial_output_data(local_80,&local_94->super_Output_data);" statement_identifier : (labeled_statement "Output_segment::add_initial_output_data(local_80,&local_94->super_Output_data);" statement_identifier : (ERROR ":" :) (expression_statement "add_initial_output_data(local_80,&local_94->super_Output_data);" (call_expression "add_initial_output_data(local_80,&local_94->super_Output_data)" identifier (argument_list "(local_80,&local_94->super_Output_data)" ( identifier , (pointer_expression "&local_94->super_Output_data" & (field_expression "local_94->super_Output_data" identifier -> field_identifier)) ))) ;))) (expression_statement "iVar23 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar23 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) }) (else_clause "else {\nLAB_00087f7a:\n      local_80 = (Output_segment *)0x0;\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }" else (compound_statement "{\nLAB_00087f7a:\n      local_80 = (Output_segment *)0x0;\n      iVar23 = *(int *)(*(int *)pbVar1 + 8);\n    }" { (labeled_statement "LAB_00087f7a:\n      local_80 = (Output_segment *)0x0;" statement_identifier : (expression_statement "local_80 = (Output_segment *)0x0;" (assignment_expression "local_80 = (Output_segment *)0x0" identifier = (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "iVar23 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar23 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) })))) (expression_statement "pSVar12 = this->script_options_;" (assignment_expression "pSVar12 = this->script_options_" identifier = (field_expression "this->script_options_" identifier -> field_identifier)) ;) (if_statement "if ((pSVar12->script_sections_).saw_sections_clause_ == false) goto LAB_00088468;" if (parenthesized_expression "((pSVar12->script_sections_).saw_sections_clause_ == false)" ( (binary_expression "(pSVar12->script_sections_).saw_sections_clause_ == false" (field_expression "(pSVar12->script_sections_).saw_sections_clause_" (parenthesized_expression "(pSVar12->script_sections_)" ( (field_expression "pSVar12->script_sections_" identifier -> field_identifier) )) . field_identifier) == false) )) (goto_statement "goto LAB_00088468;" goto statement_identifier ;)) (labeled_statement "LAB_00087f99:\n    if ((pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0) goto LAB_00088468;" statement_identifier : (if_statement "if ((pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0) goto LAB_00088468;" if (parenthesized_expression "((pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0)" ( (binary_expression "(pSVar12->script_sections_).phdrs_elements_ == (Phdrs_elements *)0x0" (field_expression "(pSVar12->script_sections_).phdrs_elements_" (parenthesized_expression "(pSVar12->script_sections_)" ( (field_expression "pSVar12->script_sections_" identifier -> field_identifier) )) . field_identifier) == (cast_expression "(Phdrs_elements *)0x0" ( (type_descriptor "Phdrs_elements *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00088468;" goto statement_identifier ;))) (if_statement "if (iVar23 != 0) goto code_r0x00087faf;" if (parenthesized_expression "(iVar23 != 0)" ( (binary_expression "iVar23 != 0" identifier != number_literal) )) (goto_statement "goto code_r0x00087faf;" goto statement_identifier ;)) })) (goto_statement "goto LAB_00088477;" goto statement_identifier ;) (labeled_statement "LAB_0008822e:\n  pOVar4 = *ppOVar19;" statement_identifier : (expression_statement "pOVar4 = *ppOVar19;" (assignment_expression "pOVar4 = *ppOVar19" identifier = (pointer_expression "*ppOVar19" * identifier)) ;)) (if_statement "if (pOVar4->out_shndx_ == 0xffffffff) {\n    p_Var3 = (pOVar4->super_Output_data)._vptr_Output_data[0xc];\n    if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n      pOVar4->out_shndx_ = uVar22;\n    }\n    else {\n      (*p_Var3)(pOVar4,uVar22);\n    }\n    uVar22 = uVar22 + 1;\n    ppOVar19 = ppOVar19 + 1;\n    if ((this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == ppOVar19) goto LAB_00088259;\n    goto LAB_0008822e;\n  }" if (parenthesized_expression "(pOVar4->out_shndx_ == 0xffffffff)" ( (binary_expression "pOVar4->out_shndx_ == 0xffffffff" (field_expression "pOVar4->out_shndx_" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    p_Var3 = (pOVar4->super_Output_data)._vptr_Output_data[0xc];\n    if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n      pOVar4->out_shndx_ = uVar22;\n    }\n    else {\n      (*p_Var3)(pOVar4,uVar22);\n    }\n    uVar22 = uVar22 + 1;\n    ppOVar19 = ppOVar19 + 1;\n    if ((this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == ppOVar19) goto LAB_00088259;\n    goto LAB_0008822e;\n  }" { (expression_statement "p_Var3 = (pOVar4->super_Output_data)._vptr_Output_data[0xc];" (assignment_expression "p_Var3 = (pOVar4->super_Output_data)._vptr_Output_data[0xc]" identifier = (subscript_expression "(pOVar4->super_Output_data)._vptr_Output_data[0xc]" (field_expression "(pOVar4->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)) {\n      pOVar4->out_shndx_ = uVar22;\n    }\n    else {\n      (*p_Var3)(pOVar4,uVar22);\n    }" if (parenthesized_expression "(p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447))" ( (binary_expression "p_Var3 == (_func_int_varargs *)(unaff_EDI + 0x1447)" identifier == (cast_expression "(_func_int_varargs *)(unaff_EDI + 0x1447)" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1447)" ( (binary_expression "unaff_EDI + 0x1447" identifier + number_literal) )))) )) (compound_statement "{\n      pOVar4->out_shndx_ = uVar22;\n    }" { (expression_statement "pOVar4->out_shndx_ = uVar22;" (assignment_expression "pOVar4->out_shndx_ = uVar22" (field_expression "pOVar4->out_shndx_" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n      (*p_Var3)(pOVar4,uVar22);\n    }" else (compound_statement "{\n      (*p_Var3)(pOVar4,uVar22);\n    }" { (expression_statement "(*p_Var3)(pOVar4,uVar22);" (call_expression "(*p_Var3)(pOVar4,uVar22)" (parenthesized_expression "(*p_Var3)" ( (pointer_expression "*p_Var3" * identifier) )) (argument_list "(pOVar4,uVar22)" ( identifier , identifier ))) ;) }))) (expression_statement "uVar22 = uVar22 + 1;" (assignment_expression "uVar22 = uVar22 + 1" identifier = (binary_expression "uVar22 + 1" identifier + number_literal)) ;) (expression_statement "ppOVar19 = ppOVar19 + 1;" (assignment_expression "ppOVar19 = ppOVar19 + 1" identifier = (binary_expression "ppOVar19 + 1" identifier + number_literal)) ;) (if_statement "if ((this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == ppOVar19) goto LAB_00088259;" if (parenthesized_expression "((this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == ppOVar19)" ( (binary_expression "(this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == ppOVar19" (field_expression "(this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish" (field_expression "(this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "(this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(this->unattached_section_list_).\n        super__Vector_base<gold::Output_section*,_std" (binary_expression "(this->unattached_section_list_).\n        super__Vector_base<gold" (field_expression "(this->unattached_section_list_).\n        super__Vector_base" (parenthesized_expression "(this->unattached_section_list_)" ( (field_expression "this->unattached_section_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) == identifier) )) (goto_statement "goto LAB_00088259;" goto statement_identifier ;)) (goto_statement "goto LAB_0008822e;" goto statement_identifier ;) })) (expression_statement "ppOVar19 = ppOVar19 + 1;" (assignment_expression "ppOVar19 = ppOVar19 + 1" identifier = (binary_expression "ppOVar19 + 1" identifier + number_literal)) ;) (if_statement "if ((this->unattached_section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish == ppOVar19) {\nLAB_00088259:\n    shndx = uVar22;\n    create_shdrs(this,pOVar11,(off_t *)local_b0);\n    if (this->any_postprocessing_sections_ == false) {\n      off = set_section_offsets(this,off,POSTPROCESSING_SECTIONS_PASS);\n      off = set_section_offsets(this,off,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);\n    }\n    Output_file_header::set_section_info(local_94,this->section_headers_,pOVar11);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined4 *)((int)&this->output_file_size_ + 4) = off._4_4_;\n    *(undefined4 *)&this->output_file_size_ = (undefined4)off;\n    return off;\n  }" if (parenthesized_expression "((this->unattached_section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish == ppOVar19)" ( (binary_expression "(this->unattached_section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish == ppOVar19" (field_expression "(this->unattached_section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish" (field_expression "(this->unattached_section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "(this->unattached_section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(this->unattached_section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(this->unattached_section_list_).\n      super__Vector_base<gold::Output_section*,_std" (binary_expression "(this->unattached_section_list_).\n      super__Vector_base<gold" (field_expression "(this->unattached_section_list_).\n      super__Vector_base" (parenthesized_expression "(this->unattached_section_list_)" ( (field_expression "this->unattached_section_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) == identifier) )) (compound_statement "{\nLAB_00088259:\n    shndx = uVar22;\n    create_shdrs(this,pOVar11,(off_t *)local_b0);\n    if (this->any_postprocessing_sections_ == false) {\n      off = set_section_offsets(this,off,POSTPROCESSING_SECTIONS_PASS);\n      off = set_section_offsets(this,off,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);\n    }\n    Output_file_header::set_section_info(local_94,this->section_headers_,pOVar11);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined4 *)((int)&this->output_file_size_ + 4) = off._4_4_;\n    *(undefined4 *)&this->output_file_size_ = (undefined4)off;\n    return off;\n  }" { (labeled_statement "LAB_00088259:\n    shndx = uVar22;" statement_identifier : (expression_statement "shndx = uVar22;" (assignment_expression "shndx = uVar22" identifier = identifier) ;)) (expression_statement "create_shdrs(this,pOVar11,(off_t *)local_b0);" (call_expression "create_shdrs(this,pOVar11,(off_t *)local_b0)" identifier (argument_list "(this,pOVar11,(off_t *)local_b0)" ( identifier , identifier , (cast_expression "(off_t *)local_b0" ( (type_descriptor "off_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (if_statement "if (this->any_postprocessing_sections_ == false) {\n      off = set_section_offsets(this,off,POSTPROCESSING_SECTIONS_PASS);\n      off = set_section_offsets(this,off,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);\n    }" if (parenthesized_expression "(this->any_postprocessing_sections_ == false)" ( (binary_expression "this->any_postprocessing_sections_ == false" (field_expression "this->any_postprocessing_sections_" identifier -> field_identifier) == false) )) (compound_statement "{\n      off = set_section_offsets(this,off,POSTPROCESSING_SECTIONS_PASS);\n      off = set_section_offsets(this,off,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);\n    }" { (expression_statement "off = set_section_offsets(this,off,POSTPROCESSING_SECTIONS_PASS);" (assignment_expression "off = set_section_offsets(this,off,POSTPROCESSING_SECTIONS_PASS)" identifier = (call_expression "set_section_offsets(this,off,POSTPROCESSING_SECTIONS_PASS)" identifier (argument_list "(this,off,POSTPROCESSING_SECTIONS_PASS)" ( identifier , identifier , identifier )))) ;) (expression_statement "off = set_section_offsets(this,off,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);" (assignment_expression "off = set_section_offsets(this,off,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS)" identifier = (call_expression "set_section_offsets(this,off,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS)" identifier (argument_list "(this,off,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS)" ( identifier , identifier , identifier )))) ;) })) (labeled_statement "Output_file_header::set_section_info(local_94,this->section_headers_,pOVar11);" statement_identifier : (ERROR ":" :) (expression_statement "set_section_info(local_94,this->section_headers_,pOVar11);" (call_expression "set_section_info(local_94,this->section_headers_,pOVar11)" identifier (argument_list "(local_94,this->section_headers_,pOVar11)" ( identifier , (field_expression "this->section_headers_" identifier -> field_identifier) , identifier ))) ;)) (expression_statement "BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;" (assignment_expression "BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1" (subscript_expression "BYTE_ARRAY_002804b9[unaff_EDI + 0x10]" identifier [ (binary_expression "unaff_EDI + 0x10" identifier + number_literal) ]) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&this->output_file_size_ + 4) = off._4_4_;" (assignment_expression "*(undefined4 *)((int)&this->output_file_size_ + 4) = off._4_4_" (pointer_expression "*(undefined4 *)((int)&this->output_file_size_ + 4)" * (cast_expression "(undefined4 *)((int)&this->output_file_size_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->output_file_size_ + 4)" ( (binary_expression "(int)&this->output_file_size_ + 4" (cast_expression "(int)&this->output_file_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->output_file_size_" & (field_expression "this->output_file_size_" identifier -> field_identifier))) + number_literal) )))) = (field_expression "off._4_4_" identifier . field_identifier)) ;) (expression_statement "*(undefined4 *)&this->output_file_size_ = (undefined4)off;" (assignment_expression "*(undefined4 *)&this->output_file_size_ = (undefined4)off" (pointer_expression "*(undefined4 *)&this->output_file_size_" * (cast_expression "(undefined4 *)&this->output_file_size_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->output_file_size_" & (field_expression "this->output_file_size_" identifier -> field_identifier)))) = (cast_expression "(undefined4)off" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (return_statement "return off;" return identifier ;) })) (goto_statement "goto LAB_0008822e;" goto statement_identifier ;) (labeled_statement "code_r0x00087faf:\n  if (*(char *)(iVar23 + 0x318d) == '\0') {\n    Script_sections::put_headers_in_phdrs\n              (&pSVar12->script_sections_,&local_94->super_Output_data,&local_8c->super_Output_data)\n    ;\n    iVar23 = *(int *)(*(int *)pbVar1 + 8);\nLAB_00088468:\n    shndx = 1;\n    if (iVar23 == 0) goto LAB_00088477;\n  }" statement_identifier : (if_statement "if (*(char *)(iVar23 + 0x318d) == '\0') {\n    Script_sections::put_headers_in_phdrs\n              (&pSVar12->script_sections_,&local_94->super_Output_data,&local_8c->super_Output_data)\n    ;\n    iVar23 = *(int *)(*(int *)pbVar1 + 8);\nLAB_00088468:\n    shndx = 1;\n    if (iVar23 == 0) goto LAB_00088477;\n  }" if (parenthesized_expression "(*(char *)(iVar23 + 0x318d) == '\0')" ( (binary_expression "*(char *)(iVar23 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar23 + 0x318d)" * (cast_expression "(char *)(iVar23 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x318d)" ( (binary_expression "iVar23 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    Script_sections::put_headers_in_phdrs\n              (&pSVar12->script_sections_,&local_94->super_Output_data,&local_8c->super_Output_data)\n    ;\n    iVar23 = *(int *)(*(int *)pbVar1 + 8);\nLAB_00088468:\n    shndx = 1;\n    if (iVar23 == 0) goto LAB_00088477;\n  }" { (labeled_statement "Script_sections::put_headers_in_phdrs\n              (&pSVar12->script_sections_,&local_94->super_Output_data,&local_8c->super_Output_data)\n    ;" statement_identifier : (ERROR ":" :) (expression_statement "put_headers_in_phdrs\n              (&pSVar12->script_sections_,&local_94->super_Output_data,&local_8c->super_Output_data)\n    ;" (call_expression "put_headers_in_phdrs\n              (&pSVar12->script_sections_,&local_94->super_Output_data,&local_8c->super_Output_data)" identifier (argument_list "(&pSVar12->script_sections_,&local_94->super_Output_data,&local_8c->super_Output_data)" ( (pointer_expression "&pSVar12->script_sections_" & (field_expression "pSVar12->script_sections_" identifier -> field_identifier)) , (pointer_expression "&local_94->super_Output_data" & (field_expression "local_94->super_Output_data" identifier -> field_identifier)) , (pointer_expression "&local_8c->super_Output_data" & (field_expression "local_8c->super_Output_data" identifier -> field_identifier)) ))) ;)) (expression_statement "iVar23 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar23 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (labeled_statement "LAB_00088468:\n    shndx = 1;" statement_identifier : (expression_statement "shndx = 1;" (assignment_expression "shndx = 1" identifier = number_literal) ;)) (if_statement "if (iVar23 == 0) goto LAB_00088477;" if (parenthesized_expression "(iVar23 == 0)" ( (binary_expression "iVar23 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_00087fc3;" goto statement_identifier ;) })))
(translation_unit "void FUN_00087d20(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5)\n\n{\n  byte *pbVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  int *piVar12;\n  code *pcVar13;\n  uint uVar14;\n  int extraout_ECX;\n  uint uVar15;\n  int iVar16;\n  uint uVar17;\n  uint uVar18;\n  int unaff_EDI;\n  undefined8 uVar19;\n  longlong lVar20;\n  undefined8 *local_b0;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int *local_94;\n  int local_90;\n  int *local_8c;\n  int local_88;\n  int local_80;\n  int local_74;\n  int local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined8 local_5c;\n  \n  FUN_0004fb7e();\n  local_74 = 0;\n  local_70 = 0;\n  if (*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);\n  }\n  FUN_0007d2c0(param_1,param_5,param_2);\n  FUN_00082750(param_1);\n  pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;\n  iVar9 = *(int *)pbVar1;\n  uVar19 = local_5c;\n  if (*(int *)(iVar9 + 8) == 0) goto LAB_00088477;\n  if (*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    \n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    \n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }\n    local_8c = (int *)FUN_0017ebf0(0x24);\n                    \n    FUN_000ba6d0(local_8c,param_1 + 0x124);\n  }\n  else {\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }\nLAB_00087db2:\n  local_94 = (int *)FUN_0017ebf0(0x34);\n                    \n  FUN_000ba800(local_94,param_4,param_3,local_8c);\n  local_b0 = &local_5c;\n  local_5c._0_4_ = local_94;\n  FUN_0008a170(param_1 + 0x148,local_b0);\n  if (local_8c != (int *)0x0) {\n    local_5c._0_4_ = local_8c;\n    FUN_0008a170(param_1 + 0x148,local_b0);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n    pcVar13 = *(code **)(*param_4 + 0x68);\n    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    \n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }\nLAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);\nLAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;\n  }\n  else {\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }\n  FUN_00083a60(param_1);\nLAB_00087e72:\n  local_88 = 0;\nLAB_00087e80:\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }\n  local_5c = uVar19;\n  iVar8 = FUN_000aa690(iVar9);\n  iVar9 = 0;\n  if (iVar8 == 0) {\n    iVar9 = local_80;\n  }\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  uVar19 = local_5c;\n  if (iVar8 != 0) {\n    iVar16 = param_4[1];\n    if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }\n    iVar16 = local_90;\n    if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (iVar9 == 0) goto LAB_00087f2e;\n    local_80 = iVar9;\n    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar7 != '\0') goto LAB_000887ba;\n    if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }\n    if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }\n    uVar14 = local_94[3] + local_8c[3];\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar8 == 0) {\n                    \n      FUN_0007a620();\n    }\n    local_a0 = *(int *)(iVar8 + 0x521c);\n    local_a4 = *(int *)(iVar8 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }\n    uVar3 = *(uint *)(iVar9 + 0x164);\n    uVar4 = *(uint *)(iVar9 + 0x168);\n    uVar17 = uVar3 - uVar14 & -local_a4;\n    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar11 = uVar3 - uVar17;\n    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar7 != '\0') goto LAB_00087f7a;\n    local_80 = 0;\n    uVar19 = local_5c;\nLAB_00087f52:\n    local_5c = uVar19;\n    if (iVar16 != 0) goto LAB_00087f5a;\n    iVar9 = *(int *)(param_1 + 4);\n    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;\nLAB_00087fc3:\n    iVar9 = local_88;\n    local_68 = 1;\n    local_5c = uVar19;\n    if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar9 + 1;\n    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);\n    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }\n    uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n    piVar12 = *(int **)(param_1 + 0x13c);\n    iVar9 = local_68;\n    if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }\nLAB_00088157:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar7 = FUN_0007a5f0();\n    iVar8 = extraout_ECX;\n    iVar16 = local_90;\nLAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    iVar9 = *(int *)(param_1 + 4);\n    uVar19 = local_5c;\n    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;\nLAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;\n    if (iVar8 != 0) goto code_r0x00087faf;\n  }\n  goto LAB_00088477;\nLAB_0008822e:\n  piVar2 = (int *)*piVar12;\n  if (piVar2[0x18] == -1) {\n    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }\n    iVar9 = iVar9 + 1;\n    piVar12 = piVar12 + 1;\n    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;\n    goto LAB_0008822e;\n  }\n  piVar12 = piVar12 + 1;\n  if (*(int **)(param_1 + 0x140) == piVar12) {\nLAB_00088259:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_0007d3e0(param_1,uVar10,local_b0);\n    uVar19 = local_5c;\n    if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }\n    local_5c = uVar19;\n    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined8 *)(param_1 + 0x1bc) = local_5c;\n    return;\n  }\n  goto LAB_0008822e;\ncode_r0x00087faf:\n  if (*(char *)(iVar8 + 0x318d) == '\0') {\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }\n  goto LAB_00087fc3;\n}\n\n" (function_definition "void FUN_00087d20(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5)\n\n{\n  byte *pbVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  int *piVar12;\n  code *pcVar13;\n  uint uVar14;\n  int extraout_ECX;\n  uint uVar15;\n  int iVar16;\n  uint uVar17;\n  uint uVar18;\n  int unaff_EDI;\n  undefined8 uVar19;\n  longlong lVar20;\n  undefined8 *local_b0;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int *local_94;\n  int local_90;\n  int *local_8c;\n  int local_88;\n  int local_80;\n  int local_74;\n  int local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined8 local_5c;\n  \n  FUN_0004fb7e();\n  local_74 = 0;\n  local_70 = 0;\n  if (*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);\n  }\n  FUN_0007d2c0(param_1,param_5,param_2);\n  FUN_00082750(param_1);\n  pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;\n  iVar9 = *(int *)pbVar1;\n  uVar19 = local_5c;\n  if (*(int *)(iVar9 + 8) == 0) goto LAB_00088477;\n  if (*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    \n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    \n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }\n    local_8c = (int *)FUN_0017ebf0(0x24);\n                    \n    FUN_000ba6d0(local_8c,param_1 + 0x124);\n  }\n  else {\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }\nLAB_00087db2:\n  local_94 = (int *)FUN_0017ebf0(0x34);\n                    \n  FUN_000ba800(local_94,param_4,param_3,local_8c);\n  local_b0 = &local_5c;\n  local_5c._0_4_ = local_94;\n  FUN_0008a170(param_1 + 0x148,local_b0);\n  if (local_8c != (int *)0x0) {\n    local_5c._0_4_ = local_8c;\n    FUN_0008a170(param_1 + 0x148,local_b0);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n    pcVar13 = *(code **)(*param_4 + 0x68);\n    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    \n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }\nLAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);\nLAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;\n  }\n  else {\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }\n  FUN_00083a60(param_1);\nLAB_00087e72:\n  local_88 = 0;\nLAB_00087e80:\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }\n  local_5c = uVar19;\n  iVar8 = FUN_000aa690(iVar9);\n  iVar9 = 0;\n  if (iVar8 == 0) {\n    iVar9 = local_80;\n  }\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  uVar19 = local_5c;\n  if (iVar8 != 0) {\n    iVar16 = param_4[1];\n    if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }\n    iVar16 = local_90;\n    if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (iVar9 == 0) goto LAB_00087f2e;\n    local_80 = iVar9;\n    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar7 != '\0') goto LAB_000887ba;\n    if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }\n    if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }\n    uVar14 = local_94[3] + local_8c[3];\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar8 == 0) {\n                    \n      FUN_0007a620();\n    }\n    local_a0 = *(int *)(iVar8 + 0x521c);\n    local_a4 = *(int *)(iVar8 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }\n    uVar3 = *(uint *)(iVar9 + 0x164);\n    uVar4 = *(uint *)(iVar9 + 0x168);\n    uVar17 = uVar3 - uVar14 & -local_a4;\n    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar11 = uVar3 - uVar17;\n    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar7 != '\0') goto LAB_00087f7a;\n    local_80 = 0;\n    uVar19 = local_5c;\nLAB_00087f52:\n    local_5c = uVar19;\n    if (iVar16 != 0) goto LAB_00087f5a;\n    iVar9 = *(int *)(param_1 + 4);\n    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;\nLAB_00087fc3:\n    iVar9 = local_88;\n    local_68 = 1;\n    local_5c = uVar19;\n    if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar9 + 1;\n    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);\n    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }\n    uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n    piVar12 = *(int **)(param_1 + 0x13c);\n    iVar9 = local_68;\n    if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }\nLAB_00088157:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar7 = FUN_0007a5f0();\n    iVar8 = extraout_ECX;\n    iVar16 = local_90;\nLAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    iVar9 = *(int *)(param_1 + 4);\n    uVar19 = local_5c;\n    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;\nLAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;\n    if (iVar8 != 0) goto code_r0x00087faf;\n  }\n  goto LAB_00088477;\nLAB_0008822e:\n  piVar2 = (int *)*piVar12;\n  if (piVar2[0x18] == -1) {\n    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }\n    iVar9 = iVar9 + 1;\n    piVar12 = piVar12 + 1;\n    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;\n    goto LAB_0008822e;\n  }\n  piVar12 = piVar12 + 1;\n  if (*(int **)(param_1 + 0x140) == piVar12) {\nLAB_00088259:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_0007d3e0(param_1,uVar10,local_b0);\n    uVar19 = local_5c;\n    if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }\n    local_5c = uVar19;\n    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined8 *)(param_1 + 0x1bc) = local_5c;\n    return;\n  }\n  goto LAB_0008822e;\ncode_r0x00087faf:\n  if (*(char *)(iVar8 + 0x318d) == '\0') {\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }\n  goto LAB_00087fc3;\n}" primitive_type (function_declarator "FUN_00087d20(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  int *piVar12;\n  code *pcVar13;\n  uint uVar14;\n  int extraout_ECX;\n  uint uVar15;\n  int iVar16;\n  uint uVar17;\n  uint uVar18;\n  int unaff_EDI;\n  undefined8 uVar19;\n  longlong lVar20;\n  undefined8 *local_b0;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int *local_94;\n  int local_90;\n  int *local_8c;\n  int local_88;\n  int local_80;\n  int local_74;\n  int local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined8 local_5c;\n  \n  FUN_0004fb7e();\n  local_74 = 0;\n  local_70 = 0;\n  if (*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);\n  }\n  FUN_0007d2c0(param_1,param_5,param_2);\n  FUN_00082750(param_1);\n  pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;\n  iVar9 = *(int *)pbVar1;\n  uVar19 = local_5c;\n  if (*(int *)(iVar9 + 8) == 0) goto LAB_00088477;\n  if (*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    \n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    \n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }\n    local_8c = (int *)FUN_0017ebf0(0x24);\n                    \n    FUN_000ba6d0(local_8c,param_1 + 0x124);\n  }\n  else {\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }\nLAB_00087db2:\n  local_94 = (int *)FUN_0017ebf0(0x34);\n                    \n  FUN_000ba800(local_94,param_4,param_3,local_8c);\n  local_b0 = &local_5c;\n  local_5c._0_4_ = local_94;\n  FUN_0008a170(param_1 + 0x148,local_b0);\n  if (local_8c != (int *)0x0) {\n    local_5c._0_4_ = local_8c;\n    FUN_0008a170(param_1 + 0x148,local_b0);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n    pcVar13 = *(code **)(*param_4 + 0x68);\n    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    \n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }\nLAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);\nLAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;\n  }\n  else {\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }\n  FUN_00083a60(param_1);\nLAB_00087e72:\n  local_88 = 0;\nLAB_00087e80:\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }\n  local_5c = uVar19;\n  iVar8 = FUN_000aa690(iVar9);\n  iVar9 = 0;\n  if (iVar8 == 0) {\n    iVar9 = local_80;\n  }\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  uVar19 = local_5c;\n  if (iVar8 != 0) {\n    iVar16 = param_4[1];\n    if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }\n    iVar16 = local_90;\n    if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (iVar9 == 0) goto LAB_00087f2e;\n    local_80 = iVar9;\n    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar7 != '\0') goto LAB_000887ba;\n    if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }\n    if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }\n    uVar14 = local_94[3] + local_8c[3];\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar8 == 0) {\n                    \n      FUN_0007a620();\n    }\n    local_a0 = *(int *)(iVar8 + 0x521c);\n    local_a4 = *(int *)(iVar8 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }\n    uVar3 = *(uint *)(iVar9 + 0x164);\n    uVar4 = *(uint *)(iVar9 + 0x168);\n    uVar17 = uVar3 - uVar14 & -local_a4;\n    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar11 = uVar3 - uVar17;\n    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar7 != '\0') goto LAB_00087f7a;\n    local_80 = 0;\n    uVar19 = local_5c;\nLAB_00087f52:\n    local_5c = uVar19;\n    if (iVar16 != 0) goto LAB_00087f5a;\n    iVar9 = *(int *)(param_1 + 4);\n    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;\nLAB_00087fc3:\n    iVar9 = local_88;\n    local_68 = 1;\n    local_5c = uVar19;\n    if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar9 + 1;\n    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);\n    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }\n    uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n    piVar12 = *(int **)(param_1 + 0x13c);\n    iVar9 = local_68;\n    if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }\nLAB_00088157:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar7 = FUN_0007a5f0();\n    iVar8 = extraout_ECX;\n    iVar16 = local_90;\nLAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    iVar9 = *(int *)(param_1 + 4);\n    uVar19 = local_5c;\n    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;\nLAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;\n    if (iVar8 != 0) goto code_r0x00087faf;\n  }\n  goto LAB_00088477;\nLAB_0008822e:\n  piVar2 = (int *)*piVar12;\n  if (piVar2[0x18] == -1) {\n    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }\n    iVar9 = iVar9 + 1;\n    piVar12 = piVar12 + 1;\n    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;\n    goto LAB_0008822e;\n  }\n  piVar12 = piVar12 + 1;\n  if (*(int **)(param_1 + 0x140) == piVar12) {\nLAB_00088259:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_0007d3e0(param_1,uVar10,local_b0);\n    uVar19 = local_5c;\n    if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }\n    local_5c = uVar19;\n    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined8 *)(param_1 + 0x1bc) = local_5c;\n    return;\n  }\n  goto LAB_0008822e;\ncode_r0x00087faf:\n  if (*(char *)(iVar8 + 0x318d) == '\0') {\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }\n  goto LAB_00087fc3;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar19;" type_identifier identifier ;) (declaration "longlong lVar20;" type_identifier identifier ;) (declaration "undefined8 *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "int local_a4;" primitive_type identifier ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "int local_98;" primitive_type identifier ;) (declaration "int *local_94;" primitive_type (pointer_declarator "*local_94" * identifier) ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int *local_8c;" primitive_type (pointer_declarator "*local_8c" * identifier) ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined8 local_5c;" type_identifier identifier ;) (expression_statement "FUN_0004fb7e();" (call_expression "FUN_0004fb7e()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (if_statement "if (*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);\n  }" if (parenthesized_expression "(*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137))" ( (binary_expression "*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)" (pointer_expression "*(code **)(*param_4 + 0x10)" * (cast_expression "(code **)(*param_4 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x10)" ( (binary_expression "*param_4 + 0x10" (pointer_expression "*param_4" * identifier) + number_literal) )))) != (cast_expression "(code *)(unaff_EDI + 0x1137)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1137)" ( (binary_expression "unaff_EDI + 0x1137" identifier + number_literal) )))) )) (compound_statement "{\n    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);\n  }" { (expression_statement "(**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);" (call_expression "(**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3)" (parenthesized_expression "(**(code **)(*param_4 + 0x10))" ( (pointer_expression "**(code **)(*param_4 + 0x10)" * (pointer_expression "*(code **)(*param_4 + 0x10)" * (cast_expression "(code **)(*param_4 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x10)" ( (binary_expression "*param_4 + 0x10" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "(param_4,param_1,param_2,param_3)" ( identifier , identifier , identifier , identifier ))) ;) })) (expression_statement "FUN_0007d2c0(param_1,param_5,param_2);" (call_expression "FUN_0007d2c0(param_1,param_5,param_2)" identifier (argument_list "(param_1,param_5,param_2)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00082750(param_1);" (call_expression "FUN_00082750(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;" (assignment_expression "pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22" identifier = (binary_expression "BYTE_ARRAY_0027a62d + unaff_EDI + 0x22" (binary_expression "BYTE_ARRAY_0027a62d + unaff_EDI" identifier + identifier) + number_literal)) ;) (expression_statement "iVar9 = *(int *)pbVar1;" (assignment_expression "iVar9 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (if_statement "if (*(int *)(iVar9 + 8) == 0) goto LAB_00088477;" if (parenthesized_expression "(*(int *)(iVar9 + 8) == 0)" ( (binary_expression "*(int *)(iVar9 + 8) == 0" (pointer_expression "*(int *)(iVar9 + 8)" * (cast_expression "(int *)(iVar9 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) (if_statement "if (*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    \n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    \n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }\n    local_8c = (int *)FUN_0017ebf0(0x24);\n                    \n    FUN_000ba6d0(local_8c,param_1 + 0x124);\n  }\n  else {\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }" if (parenthesized_expression "(*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0')" ( (binary_expression "*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar9 + 8) + 0x318d)" * (cast_expression "(char *)(*(int *)(iVar9 + 8) + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar9 + 8) + 0x318d)" ( (binary_expression "*(int *)(iVar9 + 8) + 0x318d" (pointer_expression "*(int *)(iVar9 + 8)" * (cast_expression "(int *)(iVar9 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    \n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    \n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }\n    local_8c = (int *)FUN_0017ebf0(0x24);\n                    \n    FUN_000ba6d0(local_8c,param_1 + 0x124);\n  }" { (if_statement "if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;" if (parenthesized_expression "(*(char *)(iVar9 + 0x10) == '\0')" ( (binary_expression "*(char *)(iVar9 + 0x10) == '\0'" (pointer_expression "*(char *)(iVar9 + 0x10)" * (cast_expression "(char *)(iVar9 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x10)" ( (binary_expression "iVar9 + 0x10" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00088c31;" goto statement_identifier ;)) (if_statement "if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    \n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    \n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }" if (parenthesized_expression "(*(char *)(iVar9 + 0x11) == '\0')" ( (binary_expression "*(char *)(iVar9 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar9 + 0x11)" * (cast_expression "(char *)(iVar9 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x11)" ( (binary_expression "iVar9 + 0x11" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    \n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    \n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }" { (expression_statement "iVar9 = *(int *)(param_1 + 4);" (assignment_expression "iVar9 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }" if (parenthesized_expression "((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0))" ( (binary_expression "(*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)" (parenthesized_expression "(*(char *)(iVar9 + 0xac) == '\0')" ( (binary_expression "*(char *)(iVar9 + 0xac) == '\0'" (pointer_expression "*(char *)(iVar9 + 0xac)" * (cast_expression "(char *)(iVar9 + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xac)" ( (binary_expression "iVar9 + 0xac" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)" ( (comma_expression "local_90 = 0, *(int *)(iVar9 + 0xbc) == 0" (assignment_expression "local_90 = 0" identifier = number_literal) , (binary_expression "*(int *)(iVar9 + 0xbc) == 0" (pointer_expression "*(int *)(iVar9 + 0xbc)" * (cast_expression "(int *)(iVar9 + 0xbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xbc)" ( (binary_expression "iVar9 + 0xbc" identifier + number_literal) )))) == number_literal)) ))) )) (compound_statement "{\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }" { (expression_statement "local_90 = FUN_0007f710(param_1,6,4);" (assignment_expression "local_90 = FUN_0007f710(param_1,6,4)" identifier = (call_expression "FUN_0007f710(param_1,6,4)" identifier (argument_list "(param_1,6,4)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "iVar9 = *(int *)(param_1 + 4);" (assignment_expression "iVar9 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);" (call_expression "FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0)" identifier (argument_list "(&local_5c,iVar9 + 0x68,param_1 + 0xa0)" ( (pointer_expression "&local_5c" & identifier) , (binary_expression "iVar9 + 0x68" identifier + number_literal) , (binary_expression "param_1 + 0xa0" identifier + number_literal) ))) ;) (expression_statement "FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);" (call_expression "FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c)" identifier (argument_list "(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c)" ( identifier , identifier , identifier , (pointer_expression "&local_6c" & identifier) , (pointer_expression "&local_74" & identifier) , (pointer_expression "&local_70" & identifier) , (pointer_expression "&local_68" & identifier) , (pointer_expression "&local_5c" & identifier) ))) ;) (expression_statement "iVar9 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar9 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }" { (expression_statement "FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0)" identifier (argument_list "(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0)" ( (binary_expression "unaff_EDI + 0x198c47" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x19c67f" identifier + number_literal) , number_literal ))) ;) })) (if_statement "if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }" if (parenthesized_expression "(((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0))" ( (binary_expression "((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)" (parenthesized_expression "((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0))" ( (binary_expression "(*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)" (parenthesized_expression "(*(char *)(iVar9 + 0x1a25) == '\0')" ( (binary_expression "*(char *)(iVar9 + 0x1a25) == '\0'" (pointer_expression "*(char *)(iVar9 + 0x1a25)" * (cast_expression "(char *)(iVar9 + 0x1a25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x1a25)" ( (binary_expression "iVar9 + 0x1a25" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(int *)(iVar9 + 0x1f64) != 0)" ( (binary_expression "*(int *)(iVar9 + 0x1f64) != 0" (pointer_expression "*(int *)(iVar9 + 0x1f64)" * (cast_expression "(int *)(iVar9 + 0x1f64)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x1f64)" ( (binary_expression "iVar9 + 0x1f64" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(int *)(param_1 + 0x16c) == 0)" ( (binary_expression "*(int *)(param_1 + 0x16c) == 0" (pointer_expression "*(int *)(param_1 + 0x16c)" * (cast_expression "(int *)(param_1 + 0x16c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x16c)" ( (binary_expression "param_1 + 0x16c" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n                    \n        FUN_00086960(param_1,param_4);\n      }" { (expression_statement "FUN_00086960(param_1,param_4);" (call_expression "FUN_00086960(param_1,param_4)" identifier (argument_list "(param_1,param_4)" ( identifier , identifier ))) ;) })) (expression_statement "FUN_000817a0(param_1,param_2,param_3);" (call_expression "FUN_000817a0(param_1,param_2,param_3)" identifier (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_001215b0(param_1 + 0xa0);" (call_expression "FUN_001215b0(param_1 + 0xa0)" identifier (argument_list "(param_1 + 0xa0)" ( (binary_expression "param_1 + 0xa0" identifier + number_literal) ))) ;) (expression_statement "FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);" (call_expression "FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c)" identifier (argument_list "(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c)" ( identifier , (pointer_expression "&local_5c" & identifier) , identifier , (binary_expression "local_70 + local_74" identifier + identifier) , (pointer_expression "&local_68" & identifier) , identifier ))) ;) (expression_statement "FUN_0007d800(param_1,param_3);" (call_expression "FUN_0007d800(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) (expression_statement "FUN_001459e0(&local_5c);" (call_expression "FUN_001459e0(&local_5c)" identifier (argument_list "(&local_5c)" ( (pointer_expression "&local_5c" & identifier) ))) ;) (if_statement "if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }" if (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_001807a0(local_68);\n      }" { (expression_statement "FUN_001807a0(local_68);" (call_expression "FUN_001807a0(local_68)" identifier (argument_list "(local_68)" ( identifier ))) ;) })) (expression_statement "uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);" (assignment_expression "uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c)" identifier = (call_expression "CONCAT44(local_5c._4_4_,(int *)local_5c)" identifier (argument_list "(local_5c._4_4_,(int *)local_5c)" ( (field_expression "local_5c._4_4_" identifier . field_identifier) , (cast_expression "(int *)local_5c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;" if (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) (if_statement "if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }" if (parenthesized_expression "(*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0')" ( (binary_expression "*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0'" (pointer_expression "*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d)" * (cast_expression "(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) + 0x318d)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) + 0x318d" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }" { (expression_statement "local_8c = (int *)0x0;" (assignment_expression "local_8c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00087db2;" goto statement_identifier ;) })) }) (else_clause "else {\n      local_90 = 0;\n    }" else (compound_statement "{\n      local_90 = 0;\n    }" { (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) }))) (expression_statement "local_8c = (int *)FUN_0017ebf0(0x24);" (assignment_expression "local_8c = (int *)FUN_0017ebf0(0x24)" identifier = (cast_expression "(int *)FUN_0017ebf0(0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ebf0(0x24)" identifier (argument_list "(0x24)" ( number_literal ))))) ;) (expression_statement "FUN_000ba6d0(local_8c,param_1 + 0x124);" (call_expression "FUN_000ba6d0(local_8c,param_1 + 0x124)" identifier (argument_list "(local_8c,param_1 + 0x124)" ( identifier , (binary_expression "param_1 + 0x124" identifier + number_literal) ))) ;) }) (else_clause "else {\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }" else (compound_statement "{\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }" { (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (expression_statement "local_8c = (int *)0x0;" (assignment_expression "local_8c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_00087db2:\n  local_94 = (int *)FUN_0017ebf0(0x34);" statement_identifier : (expression_statement "local_94 = (int *)FUN_0017ebf0(0x34);" (assignment_expression "local_94 = (int *)FUN_0017ebf0(0x34)" identifier = (cast_expression "(int *)FUN_0017ebf0(0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ebf0(0x34)" identifier (argument_list "(0x34)" ( number_literal ))))) ;)) (expression_statement "FUN_000ba800(local_94,param_4,param_3,local_8c);" (call_expression "FUN_000ba800(local_94,param_4,param_3,local_8c)" identifier (argument_list "(local_94,param_4,param_3,local_8c)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_b0 = &local_5c;" (assignment_expression "local_b0 = &local_5c" identifier = (pointer_expression "&local_5c" & identifier)) ;) (expression_statement "local_5c._0_4_ = local_94;" (assignment_expression "local_5c._0_4_ = local_94" (field_expression "local_5c._0_4_" identifier . field_identifier) = identifier) ;) (expression_statement "FUN_0008a170(param_1 + 0x148,local_b0);" (call_expression "FUN_0008a170(param_1 + 0x148,local_b0)" identifier (argument_list "(param_1 + 0x148,local_b0)" ( (binary_expression "param_1 + 0x148" identifier + number_literal) , identifier ))) ;) (if_statement "if (local_8c != (int *)0x0) {\n    local_5c._0_4_ = local_8c;\n    FUN_0008a170(param_1 + 0x148,local_b0);\n  }" if (parenthesized_expression "(local_8c != (int *)0x0)" ( (binary_expression "local_8c != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_5c._0_4_ = local_8c;\n    FUN_0008a170(param_1 + 0x148,local_b0);\n  }" { (expression_statement "local_5c._0_4_ = local_8c;" (assignment_expression "local_5c._0_4_ = local_8c" (field_expression "local_5c._0_4_" identifier . field_identifier) = identifier) ;) (expression_statement "FUN_0008a170(param_1 + 0x148,local_b0);" (call_expression "FUN_0008a170(param_1 + 0x148,local_b0)" identifier (argument_list "(param_1 + 0x148,local_b0)" ( (binary_expression "param_1 + 0x148" identifier + number_literal) , identifier ))) ;) })) (if_statement "if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n    pcVar13 = *(code **)(*param_4 + 0x68);\n    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    \n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }\nLAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);\nLAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;\n  }\n  else {\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }" if (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" * (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" ( (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n    pcVar13 = *(code **)(*param_4 + 0x68);\n    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    \n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }\nLAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);\nLAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;\n  }" { (expression_statement "iVar9 = *(int *)pbVar1;" (assignment_expression "iVar9 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar8 = *(int *)(iVar9 + 8);" (assignment_expression "iVar8 = *(int *)(iVar9 + 8)" identifier = (pointer_expression "*(int *)(iVar9 + 8)" * (cast_expression "(int *)(iVar9 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 != 0) goto LAB_00087e3a;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00087e3a;" goto statement_identifier ;)) (labeled_statement "LAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);" statement_identifier : (expression_statement "uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);" (assignment_expression "uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c)" identifier = (call_expression "CONCAT44(local_5c._4_4_,(int *)local_5c)" identifier (argument_list "(local_5c._4_4_,(int *)local_5c)" ( (field_expression "local_5c._4_4_" identifier . field_identifier) , (cast_expression "(int *)local_5c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;)) (expression_statement "pcVar13 = *(code **)(*param_4 + 0x68);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x68)" identifier = (pointer_expression "*(code **)(*param_4 + 0x68)" * (cast_expression "(code **)(*param_4 + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x68)" ( (binary_expression "*param_4 + 0x68" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    \n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }" if (parenthesized_expression "(pcVar13 == (code *)(unaff_EDI + 0x1497))" ( (binary_expression "pcVar13 == (code *)(unaff_EDI + 0x1497)" identifier == (cast_expression "(code *)(unaff_EDI + 0x1497)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1497)" ( (binary_expression "unaff_EDI + 0x1497" identifier + number_literal) )))) )) (compound_statement "{\nLAB_00088477:\n      local_5c = uVar19;\n                    \n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }" { (labeled_statement "LAB_00088477:\n      local_5c = uVar19;" statement_identifier : (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;)) (expression_statement "FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f)" identifier (argument_list "(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f)" ( (binary_expression "unaff_EDI + 0x198c47" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x19c67f" identifier + number_literal) ))) ;) })) (labeled_statement "LAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);" statement_identifier : (expression_statement "cVar7 = (*pcVar13)(param_4);" (assignment_expression "cVar7 = (*pcVar13)(param_4)" identifier = (call_expression "(*pcVar13)(param_4)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_4)" ( identifier )))) ;)) (labeled_statement "LAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;" statement_identifier : (if_statement "if (cVar7 == '\0') goto LAB_00087e72;" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00087e72;" goto statement_identifier ;))) }) (else_clause "else {\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }" else (compound_statement "{\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }" { (expression_statement "FUN_0007d230(param_1);" (call_expression "FUN_0007d230(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "iVar9 = *(int *)pbVar1;" (assignment_expression "iVar9 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar8 = *(int *)(iVar9 + 8);" (assignment_expression "iVar8 = *(int *)(iVar9 + 8)" identifier = (pointer_expression "*(int *)(iVar9 + 8)" * (cast_expression "(int *)(iVar9 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) goto LAB_00088adb;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00088adb;" goto statement_identifier ;)) (labeled_statement "LAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }" statement_identifier : (if_statement "if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }" if (parenthesized_expression "((*(byte *)(iVar9 + 0x14) & 8) == 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x14) & 8) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x14) & 8)" ( (binary_expression "*(byte *)(iVar9 + 0x14) & 8" (pointer_expression "*(byte *)(iVar9 + 0x14)" * (cast_expression "(byte *)(iVar9 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x14)" ( (binary_expression "iVar9 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }" { (expression_statement "pcVar13 = *(code **)(*param_4 + 0x68);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x68)" identifier = (pointer_expression "*(code **)(*param_4 + 0x68)" * (cast_expression "(code **)(*param_4 + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x68)" ( (binary_expression "*param_4 + 0x68" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;" if (parenthesized_expression "(pcVar13 != (code *)(unaff_EDI + 0x1497))" ( (binary_expression "pcVar13 != (code *)(unaff_EDI + 0x1497)" identifier != (cast_expression "(code *)(unaff_EDI + 0x1497)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1497)" ( (binary_expression "unaff_EDI + 0x1497" identifier + number_literal) )))) )) (goto_statement "goto LAB_00088af4;" goto statement_identifier ;)) (expression_statement "cVar7 = *(char *)(iVar8 + 0x3209);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x3209)" identifier = (pointer_expression "*(char *)(iVar8 + 0x3209)" * (cast_expression "(char *)(iVar8 + 0x3209)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x3209)" ( (binary_expression "iVar8 + 0x3209" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00087e60;" goto statement_identifier ;) }))) }))) (expression_statement "FUN_00083a60(param_1);" (call_expression "FUN_00083a60(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (labeled_statement "LAB_00087e72:\n  local_88 = 0;" statement_identifier : (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00087e80:\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }" statement_identifier : (if_statement "if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }" if (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" * (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" ( (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }" { (expression_statement "iVar9 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar9 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (if_statement "if (iVar9 == 0) goto LAB_00088477;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }" if (parenthesized_expression "(*(char *)(iVar9 + 0x318d) == '\0')" ( (binary_expression "*(char *)(iVar9 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar9 + 0x318d)" * (cast_expression "(char *)(iVar9 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x318d)" ( (binary_expression "iVar9 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }" { (expression_statement "local_80 = FUN_00081670(param_1,param_4);" (assignment_expression "local_80 = FUN_00081670(param_1,param_4)" identifier = (call_expression "FUN_00081670(param_1,param_4)" identifier (argument_list "(param_1,param_4)" ( identifier , identifier )))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (goto_statement "goto LAB_00088944;" goto statement_identifier ;) })) }) (else_clause "else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }" else (compound_statement "{\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }" { (expression_statement "local_80 = FUN_0007d1e0(param_1,param_3);" (assignment_expression "local_80 = FUN_0007d1e0(param_1,param_3)" identifier = (call_expression "FUN_0007d1e0(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier )))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (labeled_statement "LAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);" statement_identifier : (expression_statement "iVar9 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar9 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;)) (if_statement "if (iVar9 == 0) goto LAB_00088477;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) })))) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "iVar8 = FUN_000aa690(iVar9);" (assignment_expression "iVar8 = FUN_000aa690(iVar9)" identifier = (call_expression "FUN_000aa690(iVar9)" identifier (argument_list "(iVar9)" ( identifier )))) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (if_statement "if (iVar8 == 0) {\n    iVar9 = local_80;\n  }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar9 = local_80;\n  }" { (expression_statement "iVar9 = local_80;" (assignment_expression "iVar9 = local_80" identifier = identifier) ;) })) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (if_statement "if (iVar8 != 0) {\n    iVar16 = param_4[1];\n    if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }\n    iVar16 = local_90;\n    if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (iVar9 == 0) goto LAB_00087f2e;\n    local_80 = iVar9;\n    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar7 != '\0') goto LAB_000887ba;\n    if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }\n    if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }\n    uVar14 = local_94[3] + local_8c[3];\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar8 == 0) {\n                    \n      FUN_0007a620();\n    }\n    local_a0 = *(int *)(iVar8 + 0x521c);\n    local_a4 = *(int *)(iVar8 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }\n    uVar3 = *(uint *)(iVar9 + 0x164);\n    uVar4 = *(uint *)(iVar9 + 0x168);\n    uVar17 = uVar3 - uVar14 & -local_a4;\n    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar11 = uVar3 - uVar17;\n    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar7 != '\0') goto LAB_00087f7a;\n    local_80 = 0;\n    uVar19 = local_5c;\nLAB_00087f52:\n    local_5c = uVar19;\n    if (iVar16 != 0) goto LAB_00087f5a;\n    iVar9 = *(int *)(param_1 + 4);\n    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;\nLAB_00087fc3:\n    iVar9 = local_88;\n    local_68 = 1;\n    local_5c = uVar19;\n    if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar9 + 1;\n    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);\n    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }\n    uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n    piVar12 = *(int **)(param_1 + 0x13c);\n    iVar9 = local_68;\n    if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }\nLAB_00088157:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar7 = FUN_0007a5f0();\n    iVar8 = extraout_ECX;\n    iVar16 = local_90;\nLAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    iVar9 = *(int *)(param_1 + 4);\n    uVar19 = local_5c;\n    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;\nLAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;\n    if (iVar8 != 0) goto code_r0x00087faf;\n  }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar16 = param_4[1];\n    if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }\n    iVar16 = local_90;\n    if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (iVar9 == 0) goto LAB_00087f2e;\n    local_80 = iVar9;\n    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar7 != '\0') goto LAB_000887ba;\n    if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }\n    if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }\n    uVar14 = local_94[3] + local_8c[3];\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar8 == 0) {\n                    \n      FUN_0007a620();\n    }\n    local_a0 = *(int *)(iVar8 + 0x521c);\n    local_a4 = *(int *)(iVar8 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }\n    uVar3 = *(uint *)(iVar9 + 0x164);\n    uVar4 = *(uint *)(iVar9 + 0x168);\n    uVar17 = uVar3 - uVar14 & -local_a4;\n    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar11 = uVar3 - uVar17;\n    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar7 != '\0') goto LAB_00087f7a;\n    local_80 = 0;\n    uVar19 = local_5c;\nLAB_00087f52:\n    local_5c = uVar19;\n    if (iVar16 != 0) goto LAB_00087f5a;\n    iVar9 = *(int *)(param_1 + 4);\n    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;\nLAB_00087fc3:\n    iVar9 = local_88;\n    local_68 = 1;\n    local_5c = uVar19;\n    if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar9 + 1;\n    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);\n    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }\n    uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n    piVar12 = *(int **)(param_1 + 0x13c);\n    iVar9 = local_68;\n    if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }\nLAB_00088157:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar7 = FUN_0007a5f0();\n    iVar8 = extraout_ECX;\n    iVar16 = local_90;\nLAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    iVar9 = *(int *)(param_1 + 4);\n    uVar19 = local_5c;\n    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;\nLAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;\n    if (iVar8 != 0) goto code_r0x00087faf;\n  }" { (expression_statement "iVar16 = param_4[1];" (assignment_expression "iVar16 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (if_statement "if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }" if (parenthesized_expression "(*(char *)(iVar16 + 0x30) == '\0')" ( (binary_expression "*(char *)(iVar16 + 0x30) == '\0'" (pointer_expression "*(char *)(iVar16 + 0x30)" * (cast_expression "(char *)(iVar16 + 0x30)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x30)" ( (binary_expression "iVar16 + 0x30" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }" { (if_statement "if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }" if (parenthesized_expression "(*(char *)(iVar8 + 0x41b8) != '\0')" ( (binary_expression "*(char *)(iVar8 + 0x41b8) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x41b8)" * (cast_expression "(char *)(iVar8 + 0x41b8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x41b8)" ( (binary_expression "iVar8 + 0x41b8" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }" { (expression_statement "local_98 = *(int *)(iVar8 + 0x521c);" (assignment_expression "local_98 = *(int *)(iVar8 + 0x521c)" identifier = (pointer_expression "*(int *)(iVar8 + 0x521c)" * (cast_expression "(int *)(iVar8 + 0x521c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x521c)" ( (binary_expression "iVar8 + 0x521c" identifier + number_literal) ))))) ;) (expression_statement "local_9c = *(int *)(iVar8 + 0x5218);" (assignment_expression "local_9c = *(int *)(iVar8 + 0x5218)" identifier = (pointer_expression "*(int *)(iVar8 + 0x5218)" * (cast_expression "(int *)(iVar8 + 0x5218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x5218)" ( (binary_expression "iVar8 + 0x5218" identifier + number_literal) ))))) ;) (if_statement "if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }" if (parenthesized_expression "(local_98 == 0 && local_9c == 0)" ( (binary_expression "local_98 == 0 && local_9c == 0" (binary_expression "local_98 == 0" identifier == number_literal) && (binary_expression "local_9c == 0" identifier == number_literal)) )) (compound_statement "{\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }" { (expression_statement "local_9c = *(int *)(iVar16 + 0x20);" (assignment_expression "local_9c = *(int *)(iVar16 + 0x20)" identifier = (pointer_expression "*(int *)(iVar16 + 0x20)" * (cast_expression "(int *)(iVar16 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x20)" ( (binary_expression "iVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_98 = *(int *)(iVar16 + 0x24);" (assignment_expression "local_98 = *(int *)(iVar16 + 0x24)" identifier = (pointer_expression "*(int *)(iVar16 + 0x24)" * (cast_expression "(int *)(iVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x24)" ( (binary_expression "iVar16 + 0x24" identifier + number_literal) ))))) ;) })) (expression_statement "lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);" (assignment_expression "lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98)" identifier = (call_expression "FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98)" identifier (argument_list "(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98)" ( (pointer_expression "*(undefined4 *)(iVar8 + 0x41bc)" * (cast_expression "(undefined4 *)(iVar8 + 0x41bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x41bc)" ( (binary_expression "iVar8 + 0x41bc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar8 + 0x41c0)" * (cast_expression "(undefined4 *)(iVar8 + 0x41c0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x41c0)" ( (binary_expression "iVar8 + 0x41c0" identifier + number_literal) )))) , identifier , identifier )))) ;) (goto_statement "goto joined_r0x0008887a;" goto statement_identifier ;) })) }) (else_clause "else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }" else (if_statement "if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }" if (parenthesized_expression "(*(char *)(iVar8 + 0x423c) != '\0')" ( (binary_expression "*(char *)(iVar8 + 0x423c) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x423c)" * (cast_expression "(char *)(iVar8 + 0x423c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x423c)" ( (binary_expression "iVar8 + 0x423c" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }" { (expression_statement "local_98 = *(int *)(iVar8 + 0x521c);" (assignment_expression "local_98 = *(int *)(iVar8 + 0x521c)" identifier = (pointer_expression "*(int *)(iVar8 + 0x521c)" * (cast_expression "(int *)(iVar8 + 0x521c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x521c)" ( (binary_expression "iVar8 + 0x521c" identifier + number_literal) ))))) ;) (expression_statement "local_9c = *(int *)(iVar8 + 0x5218);" (assignment_expression "local_9c = *(int *)(iVar8 + 0x5218)" identifier = (pointer_expression "*(int *)(iVar8 + 0x5218)" * (cast_expression "(int *)(iVar8 + 0x5218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x5218)" ( (binary_expression "iVar8 + 0x5218" identifier + number_literal) ))))) ;) (if_statement "if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }" if (parenthesized_expression "(local_98 == 0 && local_9c == 0)" ( (binary_expression "local_98 == 0 && local_9c == 0" (binary_expression "local_98 == 0" identifier == number_literal) && (binary_expression "local_9c == 0" identifier == number_literal)) )) (compound_statement "{\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }" { (expression_statement "local_9c = *(int *)(iVar16 + 0x20);" (assignment_expression "local_9c = *(int *)(iVar16 + 0x20)" identifier = (pointer_expression "*(int *)(iVar16 + 0x20)" * (cast_expression "(int *)(iVar16 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x20)" ( (binary_expression "iVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_98 = *(int *)(iVar16 + 0x24);" (assignment_expression "local_98 = *(int *)(iVar16 + 0x24)" identifier = (pointer_expression "*(int *)(iVar16 + 0x24)" * (cast_expression "(int *)(iVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x24)" ( (binary_expression "iVar16 + 0x24" identifier + number_literal) ))))) ;) })) (expression_statement "lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);" (assignment_expression "lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98)" identifier = (call_expression "FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98)" identifier (argument_list "(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98)" ( (pointer_expression "*(undefined4 *)(iVar8 + 0x4240)" * (cast_expression "(undefined4 *)(iVar8 + 0x4240)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4240)" ( (binary_expression "iVar8 + 0x4240" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar8 + 0x4244)" * (cast_expression "(undefined4 *)(iVar8 + 0x4244)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4244)" ( (binary_expression "iVar8 + 0x4244" identifier + number_literal) )))) , identifier , identifier )))) ;) (labeled_statement "joined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }" statement_identifier : (if_statement "if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }" if (parenthesized_expression "(lVar20 != 0)" ( (binary_expression "lVar20 != 0" identifier != number_literal) )) (compound_statement "{\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }" { (expression_statement "cVar7 = *(char *)(iVar8 + 0x318d);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x318d)" identifier = (pointer_expression "*(char *)(iVar8 + 0x318d)" * (cast_expression "(char *)(iVar8 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x318d)" ( (binary_expression "iVar8 + 0x318d" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00087f2e;" goto statement_identifier ;) }))) })))) (expression_statement "iVar16 = local_90;" (assignment_expression "iVar16 = local_90" identifier = identifier) ;) (if_statement "if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }" if (parenthesized_expression "((local_90 != 0) && (iVar9 == 0))" ( (binary_expression "(local_90 != 0) && (iVar9 == 0)" (parenthesized_expression "(local_90 != 0)" ( (binary_expression "local_90 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }" { (if_statement "if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }" if (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" * (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" ( (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }" { (expression_statement "FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f)" identifier (argument_list "(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f)" ( (binary_expression "unaff_EDI + 0x19b1cf" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x19c44f" identifier + number_literal) ))) ;) })) (expression_statement "cVar7 = *(char *)(iVar8 + 0x318d);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x318d)" identifier = (pointer_expression "*(char *)(iVar8 + 0x318d)" * (cast_expression "(char *)(iVar8 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x318d)" ( (binary_expression "iVar8 + 0x318d" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00087f2e;" goto statement_identifier ;) })) (expression_statement "cVar7 = *(char *)(iVar8 + 0x318d);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x318d)" identifier = (pointer_expression "*(char *)(iVar8 + 0x318d)" * (cast_expression "(char *)(iVar8 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x318d)" ( (binary_expression "iVar8 + 0x318d" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) goto LAB_00087f2e;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00087f2e;" goto statement_identifier ;)) (expression_statement "local_80 = iVar9;" (assignment_expression "local_80 = iVar9" identifier = identifier) ;) (if_statement "if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }" if (parenthesized_expression "(((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))" ( (binary_expression "((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0')" (parenthesized_expression "((*(byte *)(iVar9 + 0x19c) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x19c) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x19c) & 2)" ( (binary_expression "*(byte *)(iVar9 + 0x19c) & 2" (pointer_expression "*(byte *)(iVar9 + 0x19c)" * (cast_expression "(byte *)(iVar9 + 0x19c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x19c)" ( (binary_expression "iVar9 + 0x19c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" * (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" ( (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }" { (if_statement "if (cVar7 != '\0') goto LAB_000887ba;" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000887ba;" goto statement_identifier ;)) (goto_statement "goto LAB_00087f39;" goto statement_identifier ;) })) (if_statement "if (cVar7 != '\0') goto LAB_000887ba;" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000887ba;" goto statement_identifier ;)) (if_statement "if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }" if (parenthesized_expression "((*(byte *)(local_94 + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_94 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_94 + 7) & 2)" ( (binary_expression "*(byte *)(local_94 + 7) & 2" (pointer_expression "*(byte *)(local_94 + 7)" * (cast_expression "(byte *)(local_94 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_94 + 7)" ( (binary_expression "local_94 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }" { (expression_statement "(**(code **)(*local_94 + 0x38))(local_94);" (call_expression "(**(code **)(*local_94 + 0x38))(local_94)" (parenthesized_expression "(**(code **)(*local_94 + 0x38))" ( (pointer_expression "**(code **)(*local_94 + 0x38)" * (pointer_expression "*(code **)(*local_94 + 0x38)" * (cast_expression "(code **)(*local_94 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_94 + 0x38)" ( (binary_expression "*local_94 + 0x38" (pointer_expression "*local_94" * identifier) + number_literal) ))))) )) (argument_list "(local_94)" ( identifier ))) ;) (if_statement "if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;" if (parenthesized_expression "((*(byte *)(local_94 + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_94 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_94 + 7) & 2)" ( (binary_expression "*(byte *)(local_94 + 7) & 2" (pointer_expression "*(byte *)(local_94 + 7)" * (cast_expression "(byte *)(local_94 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_94 + 7)" ( (binary_expression "local_94 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00088c5f;" goto statement_identifier ;)) })) (if_statement "if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }" if (parenthesized_expression "((*(byte *)(local_8c + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_8c + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_8c + 7) & 2)" ( (binary_expression "*(byte *)(local_8c + 7) & 2" (pointer_expression "*(byte *)(local_8c + 7)" * (cast_expression "(byte *)(local_8c + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_8c + 7)" ( (binary_expression "local_8c + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }" { (expression_statement "(**(code **)(*local_8c + 0x38))(local_8c);" (call_expression "(**(code **)(*local_8c + 0x38))(local_8c)" (parenthesized_expression "(**(code **)(*local_8c + 0x38))" ( (pointer_expression "**(code **)(*local_8c + 0x38)" * (pointer_expression "*(code **)(*local_8c + 0x38)" * (cast_expression "(code **)(*local_8c + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_8c + 0x38)" ( (binary_expression "*local_8c + 0x38" (pointer_expression "*local_8c" * identifier) + number_literal) ))))) )) (argument_list "(local_8c)" ( identifier ))) ;) (if_statement "if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }" if (parenthesized_expression "((*(byte *)(local_8c + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_8c + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_8c + 7) & 2)" ( (binary_expression "*(byte *)(local_8c + 7) & 2" (pointer_expression "*(byte *)(local_8c + 7)" * (cast_expression "(byte *)(local_8c + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_8c + 7)" ( (binary_expression "local_8c + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }" { (labeled_statement "LAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);" statement_identifier : (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1)" identifier (argument_list "(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1)" ( (binary_expression "unaff_EDI + 0x1998e3" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x19c43b" identifier + number_literal) , identifier ))) ;)) })) (if_statement "if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }" if (parenthesized_expression "((*(byte *)(local_94 + 7) & 2) == 0)" ( (binary_expression "(*(byte *)(local_94 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_94 + 7) & 2)" ( (binary_expression "*(byte *)(local_94 + 7) & 2" (pointer_expression "*(byte *)(local_94 + 7)" * (cast_expression "(byte *)(local_94 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_94 + 7)" ( (binary_expression "local_94 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }" { (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c)" identifier (argument_list "(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c)" ( (binary_expression "unaff_EDI + 0x1998e3" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x19c68f" identifier + number_literal) , identifier ))) ;) })) })) (expression_statement "uVar14 = local_94[3] + local_8c[3];" (assignment_expression "uVar14 = local_94[3] + local_8c[3]" identifier = (binary_expression "local_94[3] + local_8c[3]" (subscript_expression "local_94[3]" identifier [ number_literal ]) + (subscript_expression "local_8c[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) {\n                    \n      FUN_0007a620();\n    }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n      FUN_0007a620();\n    }" { (expression_statement "FUN_0007a620();" (call_expression "FUN_0007a620()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_a0 = *(int *)(iVar8 + 0x521c);" (assignment_expression "local_a0 = *(int *)(iVar8 + 0x521c)" identifier = (pointer_expression "*(int *)(iVar8 + 0x521c)" * (cast_expression "(int *)(iVar8 + 0x521c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x521c)" ( (binary_expression "iVar8 + 0x521c" identifier + number_literal) ))))) ;) (expression_statement "local_a4 = *(int *)(iVar8 + 0x5218);" (assignment_expression "local_a4 = *(int *)(iVar8 + 0x5218)" identifier = (pointer_expression "*(int *)(iVar8 + 0x5218)" * (cast_expression "(int *)(iVar8 + 0x5218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x5218)" ( (binary_expression "iVar8 + 0x5218" identifier + number_literal) ))))) ;) (if_statement "if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }" if (parenthesized_expression "(local_a0 == 0 && local_a4 == 0)" ( (binary_expression "local_a0 == 0 && local_a4 == 0" (binary_expression "local_a0 == 0" identifier == number_literal) && (binary_expression "local_a4 == 0" identifier == number_literal)) )) (compound_statement "{\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }" { (expression_statement "local_a0 = *(int *)(param_4[1] + 0x24);" (assignment_expression "local_a0 = *(int *)(param_4[1] + 0x24)" identifier = (pointer_expression "*(int *)(param_4[1] + 0x24)" * (cast_expression "(int *)(param_4[1] + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[1] + 0x24)" ( (binary_expression "param_4[1] + 0x24" (subscript_expression "param_4[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "local_a4 = *(int *)(param_4[1] + 0x20);" (assignment_expression "local_a4 = *(int *)(param_4[1] + 0x20)" identifier = (pointer_expression "*(int *)(param_4[1] + 0x20)" * (cast_expression "(int *)(param_4[1] + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4[1] + 0x20)" ( (binary_expression "param_4[1] + 0x20" (subscript_expression "param_4[1]" identifier [ number_literal ]) + number_literal) ))))) ;) })) (expression_statement "uVar3 = *(uint *)(iVar9 + 0x164);" (assignment_expression "uVar3 = *(uint *)(iVar9 + 0x164)" identifier = (pointer_expression "*(uint *)(iVar9 + 0x164)" * (cast_expression "(uint *)(iVar9 + 0x164)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x164)" ( (binary_expression "iVar9 + 0x164" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(iVar9 + 0x168);" (assignment_expression "uVar4 = *(uint *)(iVar9 + 0x168)" identifier = (pointer_expression "*(uint *)(iVar9 + 0x168)" * (cast_expression "(uint *)(iVar9 + 0x168)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x168)" ( (binary_expression "iVar9 + 0x168" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = uVar3 - uVar14 & -local_a4;" (assignment_expression "uVar17 = uVar3 - uVar14 & -local_a4" identifier = (binary_expression "uVar3 - uVar14 & -local_a4" (binary_expression "uVar3 - uVar14" identifier - identifier) & (unary_expression "-local_a4" - identifier))) ;) (expression_statement "uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));" (assignment_expression "uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0))" identifier = (binary_expression "uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0))" (binary_expression "uVar4 - (uVar3 < uVar14)" identifier - (parenthesized_expression "(uVar3 < uVar14)" ( (binary_expression "uVar3 < uVar14" identifier < identifier) ))) & (unary_expression "-(local_a0 + (uint)(local_a4 != 0))" - (parenthesized_expression "(local_a0 + (uint)(local_a4 != 0))" ( (binary_expression "local_a0 + (uint)(local_a4 != 0)" identifier + (call_expression "(uint)(local_a4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_a4 != 0)" ( (binary_expression "local_a4 != 0" identifier != number_literal) )))) ))))) ;) (expression_statement "uVar11 = uVar3 - uVar17;" (assignment_expression "uVar11 = uVar3 - uVar17" identifier = (binary_expression "uVar3 - uVar17" identifier - identifier)) ;) (expression_statement "uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);" (assignment_expression "uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17)" identifier = (binary_expression "(uVar4 - uVar18) - (uint)(uVar3 < uVar17)" (parenthesized_expression "(uVar4 - uVar18)" ( (binary_expression "uVar4 - uVar18" identifier - identifier) )) - (call_expression "(uint)(uVar3 < uVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < uVar17)" ( (binary_expression "uVar3 < uVar17" identifier < identifier) ))))) ;) (expression_statement "cVar7 = *(char *)(iVar8 + 0x318d);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x318d)" identifier = (pointer_expression "*(char *)(iVar8 + 0x318d)" * (cast_expression "(char *)(iVar8 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x318d)" ( (binary_expression "iVar8 + 0x318d" identifier + number_literal) ))))) ;) (if_statement "if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }" if (parenthesized_expression "(uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15)" ( (binary_expression "uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15" (binary_expression "uVar15 <= uVar4" identifier <= identifier) && (binary_expression "(uint)(uVar3 < uVar11) <= uVar4 - uVar15" (call_expression "(uint)(uVar3 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < uVar11)" ( (binary_expression "uVar3 < uVar11" identifier < identifier) ))) <= (binary_expression "uVar4 - uVar15" identifier - identifier))) )) (compound_statement "{\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }" { (expression_statement "uVar5 = *(uint *)(iVar9 + 0x160);" (assignment_expression "uVar5 = *(uint *)(iVar9 + 0x160)" identifier = (pointer_expression "*(uint *)(iVar9 + 0x160)" * (cast_expression "(uint *)(iVar9 + 0x160)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x160)" ( (binary_expression "iVar9 + 0x160" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)(iVar9 + 0x15c);" (assignment_expression "uVar6 = *(uint *)(iVar9 + 0x15c)" identifier = (pointer_expression "*(uint *)(iVar9 + 0x15c)" * (cast_expression "(uint *)(iVar9 + 0x15c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x15c)" ( (binary_expression "iVar9 + 0x15c" identifier + number_literal) ))))) ;) (if_statement "if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }" if (parenthesized_expression "(uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15)" ( (binary_expression "uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15" (binary_expression "uVar15 <= uVar5" identifier <= identifier) && (binary_expression "(uint)(uVar6 < uVar11) <= uVar5 - uVar15" (call_expression "(uint)(uVar6 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < uVar11)" ( (binary_expression "uVar6 < uVar11" identifier < identifier) ))) <= (binary_expression "uVar5 - uVar15" identifier - identifier))) )) (compound_statement "{\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }" { (expression_statement "*(uint *)(iVar9 + 0x164) = uVar17;" (assignment_expression "*(uint *)(iVar9 + 0x164) = uVar17" (pointer_expression "*(uint *)(iVar9 + 0x164)" * (cast_expression "(uint *)(iVar9 + 0x164)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x164)" ( (binary_expression "iVar9 + 0x164" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;" (assignment_expression "*(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17" (pointer_expression "*(uint *)(iVar9 + 0x15c)" * (cast_expression "(uint *)(iVar9 + 0x15c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x15c)" ( (binary_expression "iVar9 + 0x15c" identifier + number_literal) )))) = (binary_expression "(uVar6 - uVar3) + uVar17" (parenthesized_expression "(uVar6 - uVar3)" ( (binary_expression "uVar6 - uVar3" identifier - identifier) )) + identifier)) ;) (expression_statement "*(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;" (assignment_expression "*(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)" (pointer_expression "*(uint *)(iVar9 + 0x160)" * (cast_expression "(uint *)(iVar9 + 0x160)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x160)" ( (binary_expression "iVar9 + 0x160" identifier + number_literal) )))) = (binary_expression "((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)" (binary_expression "((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18" (parenthesized_expression "((uVar5 - uVar4) - (uint)(uVar6 < uVar3))" ( (binary_expression "(uVar5 - uVar4) - (uint)(uVar6 < uVar3)" (parenthesized_expression "(uVar5 - uVar4)" ( (binary_expression "uVar5 - uVar4" identifier - identifier) )) - (call_expression "(uint)(uVar6 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < uVar3)" ( (binary_expression "uVar6 < uVar3" identifier < identifier) )))) )) + identifier) + (cast_expression "(uint)CARRY4(uVar6 - uVar3,uVar17)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar6 - uVar3,uVar17)" identifier (argument_list "(uVar6 - uVar3,uVar17)" ( (binary_expression "uVar6 - uVar3" identifier - identifier) , identifier )))))) ;) (expression_statement "*(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;" (assignment_expression "*(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar9 + 0x19c)" * (cast_expression "(byte *)(iVar9 + 0x19c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x19c)" ( (binary_expression "iVar9 + 0x19c" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar9 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar9 + 0x19c)" * (cast_expression "(byte *)(iVar9 + 0x19c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x19c)" ( (binary_expression "iVar9 + 0x19c" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(uint *)(iVar9 + 0x168) = uVar18;" (assignment_expression "*(uint *)(iVar9 + 0x168) = uVar18" (pointer_expression "*(uint *)(iVar9 + 0x168)" * (cast_expression "(uint *)(iVar9 + 0x168)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x168)" ( (binary_expression "iVar9 + 0x168" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = uVar15 - (uVar11 < uVar14);" (assignment_expression "iVar8 = uVar15 - (uVar11 < uVar14)" identifier = (binary_expression "uVar15 - (uVar11 < uVar14)" identifier - (parenthesized_expression "(uVar11 < uVar14)" ( (binary_expression "uVar11 < uVar14" identifier < identifier) )))) ;) (if_statement "if (cVar7 != '\0') goto LAB_000887ba;" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000887ba;" goto statement_identifier ;)) (if_statement "if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;" if (parenthesized_expression "(uVar11 - uVar14 == 0 && iVar8 == 0)" ( (binary_expression "uVar11 - uVar14 == 0 && iVar8 == 0" (binary_expression "uVar11 - uVar14 == 0" (binary_expression "uVar11 - uVar14" identifier - identifier) == number_literal) && (binary_expression "iVar8 == 0" identifier == number_literal)) )) (goto_statement "goto LAB_0008878f;" goto statement_identifier ;)) (if_statement "if (iVar9 == 0) goto LAB_0008878f;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008878f;" goto statement_identifier ;)) (expression_statement "piVar12 = (int *)FUN_0017ebf0(0x2c);" (assignment_expression "piVar12 = (int *)FUN_0017ebf0(0x2c)" identifier = (cast_expression "(int *)FUN_0017ebf0(0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ebf0(0x2c)" identifier (argument_list "(0x2c)" ( number_literal ))))) ;) (expression_statement "piVar12[1] = 0;" (assignment_expression "piVar12[1] = 0" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[3] = uVar11 - uVar14;" (assignment_expression "piVar12[3] = uVar11 - uVar14" (subscript_expression "piVar12[3]" identifier [ number_literal ]) = (binary_expression "uVar11 - uVar14" identifier - identifier)) ;) (expression_statement "piVar12[2] = 0;" (assignment_expression "piVar12[2] = 0" (subscript_expression "piVar12[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[8] = 0;" (assignment_expression "piVar12[8] = 0" (subscript_expression "piVar12[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[9] = 1;" (assignment_expression "piVar12[9] = 1" (subscript_expression "piVar12[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;" (assignment_expression "*(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10" (pointer_expression "*(byte *)(piVar12 + 7)" * (cast_expression "(byte *)(piVar12 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 7)" ( (binary_expression "piVar12 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar12 + 7) & 0xe0 | 10" (binary_expression "*(byte *)(piVar12 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar12 + 7)" * (cast_expression "(byte *)(piVar12 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 7)" ( (binary_expression "piVar12 + 7" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "piVar12[10] = 0;" (assignment_expression "piVar12[10] = 0" (subscript_expression "piVar12[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[4] = iVar8;" (assignment_expression "piVar12[4] = iVar8" (subscript_expression "piVar12[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar12[5] = -1;" (assignment_expression "piVar12[5] = -1" (subscript_expression "piVar12[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[6] = -1;" (assignment_expression "piVar12[6] = -1" (subscript_expression "piVar12[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar12 = unaff_EDI + 0x2759db;" (assignment_expression "*piVar12 = unaff_EDI + 0x2759db" (pointer_expression "*piVar12" * identifier) = (binary_expression "unaff_EDI + 0x2759db" identifier + number_literal)) ;) (expression_statement "FUN_000bee40(iVar9,piVar12);" (call_expression "FUN_000bee40(iVar9,piVar12)" identifier (argument_list "(iVar9,piVar12)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_0008878f;" goto statement_identifier ;) })) })) (if_statement "if (cVar7 != '\0') goto LAB_00087f7a;" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00087f7a;" goto statement_identifier ;)) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (labeled_statement "LAB_00087f52:\n    local_5c = uVar19;" statement_identifier : (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;)) (if_statement "if (iVar16 != 0) goto LAB_00087f5a;" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00087f5a;" goto statement_identifier ;)) (expression_statement "iVar9 = *(int *)(param_1 + 4);" (assignment_expression "iVar9 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;" if (parenthesized_expression "(*(char *)(iVar9 + 0xac) != '\0')" ( (binary_expression "*(char *)(iVar9 + 0xac) != '\0'" (pointer_expression "*(char *)(iVar9 + 0xac)" * (cast_expression "(char *)(iVar9 + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xac)" ( (binary_expression "iVar9 + 0xac" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00087f99;" goto statement_identifier ;)) (labeled_statement "LAB_00087fc3:\n    iVar9 = local_88;" statement_identifier : (expression_statement "iVar9 = local_88;" (assignment_expression "iVar9 = local_88" identifier = identifier) ;)) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" identifier = number_literal) ;) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (if_statement "if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }" if (parenthesized_expression "(*(char *)(iVar8 + 0x318d) == '\0')" ( (binary_expression "*(char *)(iVar8 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x318d)" * (cast_expression "(char *)(iVar8 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x318d)" ( (binary_expression "iVar8 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }" { (expression_statement "uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);" (assignment_expression "uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68)" identifier = (call_expression "FUN_00086af0(param_1,param_4,local_80,&local_68)" identifier (argument_list "(param_1,param_4,local_80,&local_68)" ( identifier , identifier , identifier , (pointer_expression "&local_68" & identifier) )))) ;) (expression_statement "iVar8 = *(int *)pbVar1;" (assignment_expression "iVar8 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar16 = *(int *)(iVar8 + 8);" (assignment_expression "iVar16 = *(int *)(iVar8 + 8)" identifier = (pointer_expression "*(int *)(iVar8 + 8)" * (cast_expression "(int *)(iVar8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 == 0) goto LAB_000888c2;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000888c2;" goto statement_identifier ;)) (labeled_statement "LAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }" statement_identifier : (if_statement "if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }" if (parenthesized_expression "((*(byte *)(iVar8 + 0x14) & 8) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x14) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x14) & 8)" ( (binary_expression "*(byte *)(iVar8 + 0x14) & 8" (pointer_expression "*(byte *)(iVar8 + 0x14)" * (cast_expression "(byte *)(iVar8 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }" { (if_statement "if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }" if (parenthesized_expression "(local_88 == 0)" ( (binary_expression "local_88 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }" { (expression_statement "FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);" (call_expression "FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x1e8)" * (cast_expression "(undefined4 *)(param_1 + 0x1e8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1e8)" ( (binary_expression "param_1 + 0x1e8" identifier + number_literal) )))) , (binary_expression "param_1 + 0x130" identifier + number_literal) ))) ;) }) (else_clause "else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }" else (compound_statement "{\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }" { (expression_statement "FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);" (call_expression "FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x1e8)" * (cast_expression "(undefined4 *)(param_1 + 0x1e8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1e8)" ( (binary_expression "param_1 + 0x1e8" identifier + number_literal) )))) , (binary_expression "param_1 + 0x130" identifier + number_literal) ))) ;) }))) (expression_statement "iVar8 = *(int *)pbVar1;" (assignment_expression "iVar8 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar16 = *(int *)(iVar8 + 8);" (assignment_expression "iVar16 = *(int *)(iVar8 + 8)" identifier = (pointer_expression "*(int *)(iVar8 + 8)" * (cast_expression "(int *)(iVar8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 == 0) goto LAB_000888c2;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000888c2;" goto statement_identifier ;)) }))) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (if_statement "if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;" if (parenthesized_expression "((*(byte *)(iVar8 + 0x14) & 8) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x14) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x14) & 8)" ( (binary_expression "*(byte *)(iVar8 + 0x14) & 8" (pointer_expression "*(byte *)(iVar8 + 0x14)" * (cast_expression "(byte *)(iVar8 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00088970;" goto statement_identifier ;)) (expression_statement "pcVar13 = *(code **)(*param_4 + 0x68);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x68)" identifier = (pointer_expression "*(code **)(*param_4 + 0x68)" * (cast_expression "(code **)(*param_4 + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x68)" ( (binary_expression "*param_4 + 0x68" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;" if (parenthesized_expression "(pcVar13 != (code *)(unaff_EDI + 0x1497))" ( (binary_expression "pcVar13 != (code *)(unaff_EDI + 0x1497)" identifier != (cast_expression "(code *)(unaff_EDI + 0x1497)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1497)" ( (binary_expression "unaff_EDI + 0x1497" identifier + number_literal) )))) )) (goto_statement "goto LAB_000888db;" goto statement_identifier ;)) (if_statement "if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;" if (parenthesized_expression "((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))" ( (binary_expression "(*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147))" (parenthesized_expression "(*(char *)(iVar16 + 0x3209) != '\0')" ( (binary_expression "*(char *)(iVar16 + 0x3209) != '\0'" (pointer_expression "*(char *)(iVar16 + 0x3209)" * (cast_expression "(char *)(iVar16 + 0x3209)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x3209)" ( (binary_expression "iVar16 + 0x3209" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147))" ( (comma_expression "pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x6c)" identifier = (pointer_expression "*(code **)(*param_4 + 0x6c)" * (cast_expression "(code **)(*param_4 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x6c)" ( (binary_expression "*param_4 + 0x6c" (pointer_expression "*param_4" * identifier) + number_literal) ))))) , (binary_expression "pcVar13 != (code *)(unaff_EDI + 0x1147)" identifier != (cast_expression "(code *)(unaff_EDI + 0x1147)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1147)" ( (binary_expression "unaff_EDI + 0x1147" identifier + number_literal) ))))) ))) )) (goto_statement "goto LAB_00088910;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }" else (compound_statement "{\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }" { (expression_statement "uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);" (assignment_expression "uVar19 = FUN_0007c8c0(param_1,local_94,&local_68)" identifier = (call_expression "FUN_0007c8c0(param_1,local_94,&local_68)" identifier (argument_list "(param_1,local_94,&local_68)" ( identifier , identifier , (pointer_expression "&local_68" & identifier) )))) ;) (expression_statement "iVar8 = *(int *)pbVar1;" (assignment_expression "iVar8 = *(int *)pbVar1" identifier = (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar16 = *(int *)(iVar8 + 8);" (assignment_expression "iVar16 = *(int *)(iVar8 + 8)" identifier = (pointer_expression "*(int *)(iVar8 + 8)" * (cast_expression "(int *)(iVar8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 != 0) goto LAB_00087ff2;" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00087ff2;" goto statement_identifier ;)) (labeled_statement "LAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);" statement_identifier : (expression_statement "pcVar13 = *(code **)(*param_4 + 0x68);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x68)" identifier = (pointer_expression "*(code **)(*param_4 + 0x68)" * (cast_expression "(code **)(*param_4 + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x68)" ( (binary_expression "*param_4 + 0x68" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;)) (if_statement "if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;" if (parenthesized_expression "(pcVar13 == (code *)(unaff_EDI + 0x1497))" ( (binary_expression "pcVar13 == (code *)(unaff_EDI + 0x1497)" identifier == (cast_expression "(code *)(unaff_EDI + 0x1497)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1497)" ( (binary_expression "unaff_EDI + 0x1497" identifier + number_literal) )))) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) (labeled_statement "LAB_000888db:\n      local_5c = uVar19;" statement_identifier : (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;)) (expression_statement "cVar7 = (*pcVar13)(param_4);" (assignment_expression "cVar7 = (*pcVar13)(param_4)" identifier = (call_expression "(*pcVar13)(param_4)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }" { (if_statement "if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }" if (parenthesized_expression "((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0))" ( (binary_expression "(*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)" (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) == 0)" ( (binary_expression "*(int *)(*(int *)pbVar1 + 8) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == number_literal) )) || (parenthesized_expression "((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)" ( (binary_expression "(*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0" (parenthesized_expression "(*(byte *)(*(int *)pbVar1 + 0x14) & 8)" ( (binary_expression "*(byte *)(*(int *)pbVar1 + 0x14) & 8" (pointer_expression "*(byte *)(*(int *)pbVar1 + 0x14)" * (cast_expression "(byte *)(*(int *)pbVar1 + 0x14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0x14)" ( (binary_expression "*(int *)pbVar1 + 0x14" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }" { (expression_statement "pcVar13 = *(code **)(*param_4 + 0x6c);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x6c)" identifier = (pointer_expression "*(code **)(*param_4 + 0x6c)" * (cast_expression "(code **)(*param_4 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x6c)" ( (binary_expression "*param_4 + 0x6c" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;" if (parenthesized_expression "(pcVar13 == (code *)(unaff_EDI + 0x1147))" ( (binary_expression "pcVar13 == (code *)(unaff_EDI + 0x1147)" identifier == (cast_expression "(code *)(unaff_EDI + 0x1147)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1147)" ( (binary_expression "unaff_EDI + 0x1147" identifier + number_literal) )))) )) (goto_statement "goto LAB_00088098;" goto statement_identifier ;)) (labeled_statement "LAB_00088910:\n          local_88 = local_88 + 1;" statement_identifier : (expression_statement "local_88 = local_88 + 1;" (assignment_expression "local_88 = local_88 + 1" identifier = (binary_expression "local_88 + 1" identifier + number_literal)) ;)) (expression_statement "cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);" (assignment_expression "cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5)" identifier = (call_expression "(*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_4,local_88,param_2,param_3,param_1,param_5)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) }) (else_clause "else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }" else (compound_statement "{\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }" { (labeled_statement "LAB_00088970:\n          local_88 = local_88 + 1;" statement_identifier : (expression_statement "local_88 = local_88 + 1;" (assignment_expression "local_88 = local_88 + 1" identifier = (binary_expression "local_88 + 1" identifier + number_literal)) ;)) (expression_statement "cVar7 = local_88 < 2;" (assignment_expression "cVar7 = local_88 < 2" identifier = (binary_expression "local_88 < 2" identifier < number_literal)) ;) }))) (expression_statement "local_88 = iVar9 + 1;" (assignment_expression "local_88 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (if_statement "if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }" { (expression_statement "FUN_0007c310(param_1);" (call_expression "FUN_0007c310(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (goto_statement "goto LAB_00087e80;" goto statement_identifier ;) })) })) }))) (labeled_statement "LAB_00088098:\n    local_88 = iVar9 + 1;" statement_identifier : (expression_statement "local_88 = iVar9 + 1;" (assignment_expression "local_88 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;)) (expression_statement "iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);" (assignment_expression "iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0)" identifier = (call_expression "FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0)" identifier (argument_list "(param_3,&UNK_0019b53f + unaff_EDI,0)" ( identifier , (binary_expression "&UNK_0019b53f + unaff_EDI" (pointer_expression "&UNK_0019b53f" & identifier) + identifier) , number_literal )))) ;) (if_statement "if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }" if (parenthesized_expression "((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0))" ( (binary_expression "(iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)" (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(iVar9 + 0x2c) & 4) != 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x2c) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar9 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar9 + 0x2c)" * (cast_expression "(byte *)(iVar9 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x2c)" ( (binary_expression "iVar9 + 0x2c" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }" { (if_statement "if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }" if (parenthesized_expression "(local_80 == 0)" ( (binary_expression "local_80 == 0" identifier == number_literal) )) (compound_statement "{\n        FUN_00122fd0(iVar9);\n      }" { (expression_statement "FUN_00122fd0(iVar9);" (call_expression "FUN_00122fd0(iVar9)" identifier (argument_list "(iVar9)" ( identifier ))) ;) }) (else_clause "else {\n        FUN_00122f70(iVar9,local_80,0);\n      }" else (compound_statement "{\n        FUN_00122f70(iVar9,local_80,0);\n      }" { (expression_statement "FUN_00122f70(iVar9,local_80,0);" (call_expression "FUN_00122f70(iVar9,local_80,0)" identifier (argument_list "(iVar9,local_80,0)" ( identifier , identifier , number_literal ))) ;) }))) })) (expression_statement "uVar19 = FUN_0007cbc0(param_1,local_5c,0);" (assignment_expression "uVar19 = FUN_0007cbc0(param_1,local_5c,0)" identifier = (call_expression "FUN_0007cbc0(param_1,local_5c,0)" identifier (argument_list "(param_1,local_5c,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "piVar12 = *(int **)(param_1 + 0x13c);" (assignment_expression "piVar12 = *(int **)(param_1 + 0x13c)" identifier = (pointer_expression "*(int **)(param_1 + 0x13c)" * (cast_expression "(int **)(param_1 + 0x13c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = local_68;" (assignment_expression "iVar9 = local_68" identifier = identifier) ;) (if_statement "if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }" if (parenthesized_expression "(*(int **)(param_1 + 0x140) != piVar12)" ( (binary_expression "*(int **)(param_1 + 0x140) != piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" * (cast_expression "(int **)(param_1 + 0x140)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }" { (do_statement "do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);" do (compound_statement "{\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      }" { (while_statement "while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }" while (parenthesized_expression "(piVar2 = (int *)*piVar12, piVar2[0x18] == -1)" ( (comma_expression "piVar2 = (int *)*piVar12, piVar2[0x18] == -1" (assignment_expression "piVar2 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) , (binary_expression "piVar2[0x18] == -1" (subscript_expression "piVar2[0x18]" identifier [ number_literal ]) == number_literal)) )) (compound_statement "{\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }" { (if_statement "if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }" if (parenthesized_expression "(*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447))" ( (binary_expression "*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)" (pointer_expression "*(code **)(*piVar2 + 0x30)" * (cast_expression "(code **)(*piVar2 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x30)" ( (binary_expression "*piVar2 + 0x30" (pointer_expression "*piVar2" * identifier) + number_literal) )))) == (cast_expression "(code *)(unaff_EDI + 0x1447)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1447)" ( (binary_expression "unaff_EDI + 0x1447" identifier + number_literal) )))) )) (compound_statement "{\n            piVar2[0x18] = iVar9;\n          }" { (expression_statement "piVar2[0x18] = iVar9;" (assignment_expression "piVar2[0x18] = iVar9" (subscript_expression "piVar2[0x18]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }" else (compound_statement "{\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }" { (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "(**(code **)(*piVar2 + 0x30))(piVar2,iVar9);" (call_expression "(**(code **)(*piVar2 + 0x30))(piVar2,iVar9)" (parenthesized_expression "(**(code **)(*piVar2 + 0x30))" ( (pointer_expression "**(code **)(*piVar2 + 0x30)" * (pointer_expression "*(code **)(*piVar2 + 0x30)" * (cast_expression "(code **)(*piVar2 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x30)" ( (binary_expression "*piVar2 + 0x30" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,iVar9)" ( identifier , identifier ))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) }))) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (if_statement "if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;" if (parenthesized_expression "(*(int **)(param_1 + 0x140) == piVar12)" ( (binary_expression "*(int **)(param_1 + 0x140) == piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" * (cast_expression "(int **)(param_1 + 0x140)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) == identifier) )) (goto_statement "goto LAB_00088157;" goto statement_identifier ;)) })) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(int **)(param_1 + 0x140) != piVar12)" ( (binary_expression "*(int **)(param_1 + 0x140) != piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" * (cast_expression "(int **)(param_1 + 0x140)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) != identifier) )) ;) })) (labeled_statement "LAB_00088157:\n    local_68 = iVar9;" statement_identifier : (expression_statement "local_68 = iVar9;" (assignment_expression "local_68 = iVar9" identifier = identifier) ;)) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);" (call_expression "FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74)" identifier (argument_list "(param_1,param_2,param_3,iVar9,local_b0,local_74)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }" if (parenthesized_expression "(*(char *)(*(int *)pbVar1 + 0x10) != '\0')" ( (binary_expression "*(char *)(*(int *)pbVar1 + 0x10) != '\0'" (pointer_expression "*(char *)(*(int *)pbVar1 + 0x10)" * (cast_expression "(char *)(*(int *)pbVar1 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0x10)" ( (binary_expression "*(int *)pbVar1 + 0x10" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }" { (if_statement "if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }" if (parenthesized_expression "(*(char *)(*(int *)pbVar1 + 0x11) == '\0')" ( (binary_expression "*(char *)(*(int *)pbVar1 + 0x11) == '\0'" (pointer_expression "*(char *)(*(int *)pbVar1 + 0x11)" * (cast_expression "(char *)(*(int *)pbVar1 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 0x11)" ( (binary_expression "*(int *)pbVar1 + 0x11" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_0007d770(param_1,param_2);\n      }" { (expression_statement "FUN_0007d770(param_1,param_2);" (call_expression "FUN_0007d770(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;) })) (expression_statement "FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);" (call_expression "FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1)" identifier (argument_list "(*(undefined4 *)(param_1 + 4),param_3,param_1)" ( (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , identifier , identifier ))) ;) (if_statement "if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x1d0) != 0)" ( (binary_expression "*(int *)(param_1 + 0x1d0) != 0" (pointer_expression "*(int *)(param_1 + 0x1d0)" * (cast_expression "(int *)(param_1 + 0x1d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d0)" ( (binary_expression "param_1 + 0x1d0" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }" { (expression_statement "FUN_00066ab0(*(int *)(param_1 + 0x1d0));" (call_expression "FUN_00066ab0(*(int *)(param_1 + 0x1d0))" identifier (argument_list "(*(int *)(param_1 + 0x1d0))" ( (pointer_expression "*(int *)(param_1 + 0x1d0)" * (cast_expression "(int *)(param_1 + 0x1d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d0)" ( (binary_expression "param_1 + 0x1d0" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00080980(param_1,param_3);" (call_expression "FUN_00080980(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))) ;) })) (expression_statement "uVar10 = FUN_00081560(param_1);" (assignment_expression "uVar10 = FUN_00081560(param_1)" identifier = (call_expression "FUN_00081560(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar19 = FUN_0007cbc0(param_1,local_5c,0);" (assignment_expression "uVar19 = FUN_0007cbc0(param_1,local_5c,0)" identifier = (call_expression "FUN_0007cbc0(param_1,local_5c,0)" identifier (argument_list "(param_1,local_5c,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "piVar12 = *(int **)(param_1 + 0x13c);" (assignment_expression "piVar12 = *(int **)(param_1 + 0x13c)" identifier = (pointer_expression "*(int **)(param_1 + 0x13c)" * (cast_expression "(int **)(param_1 + 0x13c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x13c)" ( (binary_expression "param_1 + 0x13c" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = local_68;" (assignment_expression "iVar9 = local_68" identifier = identifier) ;) (if_statement "if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;" if (parenthesized_expression "(piVar12 == *(int **)(param_1 + 0x140))" ( (binary_expression "piVar12 == *(int **)(param_1 + 0x140)" identifier == (pointer_expression "*(int **)(param_1 + 0x140)" * (cast_expression "(int **)(param_1 + 0x140)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) ))))) )) (goto_statement "goto LAB_00088259;" goto statement_identifier ;)) (goto_statement "goto LAB_0008822e;" goto statement_identifier ;) })) (labeled_statement "LAB_00088c31:\n    cVar7 = FUN_0007a5f0();" statement_identifier : (expression_statement "cVar7 = FUN_0007a5f0();" (assignment_expression "cVar7 = FUN_0007a5f0()" identifier = (call_expression "FUN_0007a5f0()" identifier (argument_list "()" ( )))) ;)) (expression_statement "iVar8 = extraout_ECX;" (assignment_expression "iVar8 = extraout_ECX" identifier = identifier) ;) (expression_statement "iVar16 = local_90;" (assignment_expression "iVar16 = local_90" identifier = identifier) ;) (labeled_statement "LAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" statement_identifier : (if_statement "if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" { (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }" statement_identifier : (if_statement "if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }" if (parenthesized_expression "(local_8c == (int *)0x0)" ( (binary_expression "local_8c == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }" { (expression_statement "FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f)" identifier (argument_list "(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f)" ( (binary_expression "unaff_EDI + 0x19b1cf" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x19c44f" identifier + number_literal) ))) ;) }))) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (if_statement "if (local_80 == 0) goto LAB_00087f52;" if (parenthesized_expression "(local_80 == 0)" ( (binary_expression "local_80 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00087f52;" goto statement_identifier ;)) (labeled_statement "LAB_0008878f:\n      FUN_000bee40(local_80,local_8c);" statement_identifier : (expression_statement "FUN_000bee40(local_80,local_8c);" (call_expression "FUN_000bee40(local_80,local_8c)" identifier (argument_list "(local_80,local_8c)" ( identifier , identifier ))) ;)) (if_statement "if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }" { (labeled_statement "LAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);" statement_identifier : (expression_statement "FUN_000bee40(iVar16,local_8c);" (call_expression "FUN_000bee40(iVar16,local_8c)" identifier (argument_list "(iVar16,local_8c)" ( identifier , identifier ))) ;)) (if_statement "if (local_80 == 0) goto LAB_00087f7a;" if (parenthesized_expression "(local_80 == 0)" ( (binary_expression "local_80 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00087f7a;" goto statement_identifier ;)) })) (labeled_statement "LAB_000887ba:\n      FUN_000bee40(local_80,local_94);" statement_identifier : (expression_statement "FUN_000bee40(local_80,local_94);" (call_expression "FUN_000bee40(local_80,local_94)" identifier (argument_list "(local_80,local_94)" ( identifier , identifier ))) ;)) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) }) (else_clause "else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" else (compound_statement "{\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" { (labeled_statement "LAB_00087f7a:\n      local_80 = 0;" statement_identifier : (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;)) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) })))) (expression_statement "iVar9 = *(int *)(param_1 + 4);" (assignment_expression "iVar9 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (if_statement "if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;" if (parenthesized_expression "(*(char *)(iVar9 + 0xac) == '\0')" ( (binary_expression "*(char *)(iVar9 + 0xac) == '\0'" (pointer_expression "*(char *)(iVar9 + 0xac)" * (cast_expression "(char *)(iVar9 + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xac)" ( (binary_expression "iVar9 + 0xac" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00088468;" goto statement_identifier ;)) (labeled_statement "LAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;" statement_identifier : (if_statement "if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;" if (parenthesized_expression "(*(int *)(iVar9 + 0xbc) == 0)" ( (binary_expression "*(int *)(iVar9 + 0xbc) == 0" (pointer_expression "*(int *)(iVar9 + 0xbc)" * (cast_expression "(int *)(iVar9 + 0xbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xbc)" ( (binary_expression "iVar9 + 0xbc" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00088468;" goto statement_identifier ;))) (if_statement "if (iVar8 != 0) goto code_r0x00087faf;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto code_r0x00087faf;" goto statement_identifier ;)) })) (goto_statement "goto LAB_00088477;" goto statement_identifier ;) (labeled_statement "LAB_0008822e:\n  piVar2 = (int *)*piVar12;" statement_identifier : (expression_statement "piVar2 = (int *)*piVar12;" (assignment_expression "piVar2 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ;)) (if_statement "if (piVar2[0x18] == -1) {\n    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }\n    iVar9 = iVar9 + 1;\n    piVar12 = piVar12 + 1;\n    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;\n    goto LAB_0008822e;\n  }" if (parenthesized_expression "(piVar2[0x18] == -1)" ( (binary_expression "piVar2[0x18] == -1" (subscript_expression "piVar2[0x18]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }\n    iVar9 = iVar9 + 1;\n    piVar12 = piVar12 + 1;\n    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;\n    goto LAB_0008822e;\n  }" { (if_statement "if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }" if (parenthesized_expression "(*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447))" ( (binary_expression "*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)" (pointer_expression "*(code **)(*piVar2 + 0x30)" * (cast_expression "(code **)(*piVar2 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x30)" ( (binary_expression "*piVar2 + 0x30" (pointer_expression "*piVar2" * identifier) + number_literal) )))) == (cast_expression "(code *)(unaff_EDI + 0x1447)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1447)" ( (binary_expression "unaff_EDI + 0x1447" identifier + number_literal) )))) )) (compound_statement "{\n      piVar2[0x18] = iVar9;\n    }" { (expression_statement "piVar2[0x18] = iVar9;" (assignment_expression "piVar2[0x18] = iVar9" (subscript_expression "piVar2[0x18]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }" else (compound_statement "{\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }" { (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "(**(code **)(*piVar2 + 0x30))(piVar2,iVar9);" (call_expression "(**(code **)(*piVar2 + 0x30))(piVar2,iVar9)" (parenthesized_expression "(**(code **)(*piVar2 + 0x30))" ( (pointer_expression "**(code **)(*piVar2 + 0x30)" * (pointer_expression "*(code **)(*piVar2 + 0x30)" * (cast_expression "(code **)(*piVar2 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x30)" ( (binary_expression "*piVar2 + 0x30" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,iVar9)" ( identifier , identifier ))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) }))) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (if_statement "if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;" if (parenthesized_expression "(*(int **)(param_1 + 0x140) == piVar12)" ( (binary_expression "*(int **)(param_1 + 0x140) == piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" * (cast_expression "(int **)(param_1 + 0x140)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) == identifier) )) (goto_statement "goto LAB_00088259;" goto statement_identifier ;)) (goto_statement "goto LAB_0008822e;" goto statement_identifier ;) })) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (if_statement "if (*(int **)(param_1 + 0x140) == piVar12) {\nLAB_00088259:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_0007d3e0(param_1,uVar10,local_b0);\n    uVar19 = local_5c;\n    if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }\n    local_5c = uVar19;\n    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined8 *)(param_1 + 0x1bc) = local_5c;\n    return;\n  }" if (parenthesized_expression "(*(int **)(param_1 + 0x140) == piVar12)" ( (binary_expression "*(int **)(param_1 + 0x140) == piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" * (cast_expression "(int **)(param_1 + 0x140)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x140)" ( (binary_expression "param_1 + 0x140" identifier + number_literal) )))) == identifier) )) (compound_statement "{\nLAB_00088259:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_0007d3e0(param_1,uVar10,local_b0);\n    uVar19 = local_5c;\n    if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }\n    local_5c = uVar19;\n    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined8 *)(param_1 + 0x1bc) = local_5c;\n    return;\n  }" { (labeled_statement "LAB_00088259:\n    local_68 = iVar9;" statement_identifier : (expression_statement "local_68 = iVar9;" (assignment_expression "local_68 = iVar9" identifier = identifier) ;)) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "FUN_0007d3e0(param_1,uVar10,local_b0);" (call_expression "FUN_0007d3e0(param_1,uVar10,local_b0)" identifier (argument_list "(param_1,uVar10,local_b0)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (if_statement "if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }" if (parenthesized_expression "(*(char *)(param_1 + 0x1ca) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x1ca) == '\0'" (pointer_expression "*(char *)(param_1 + 0x1ca)" * (cast_expression "(char *)(param_1 + 0x1ca)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1ca)" ( (binary_expression "param_1 + 0x1ca" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }" { (expression_statement "uVar19 = FUN_0007cbc0(param_1,local_5c,1);" (assignment_expression "uVar19 = FUN_0007cbc0(param_1,local_5c,1)" identifier = (call_expression "FUN_0007cbc0(param_1,local_5c,1)" identifier (argument_list "(param_1,local_5c,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "uVar19 = FUN_0007cbc0(param_1,uVar19,2);" (assignment_expression "uVar19 = FUN_0007cbc0(param_1,uVar19,2)" identifier = (call_expression "FUN_0007cbc0(param_1,uVar19,2)" identifier (argument_list "(param_1,uVar19,2)" ( identifier , identifier , number_literal )))) ;) })) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);" (call_expression "FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10)" identifier (argument_list "(local_94,*(undefined4 *)(param_1 + 0x160),uVar10)" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x160)" * (cast_expression "(undefined4 *)(param_1 + 0x160)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x160)" ( (binary_expression "param_1 + 0x160" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;" (assignment_expression "BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1" (subscript_expression "BYTE_ARRAY_002804b9[unaff_EDI + 0x10]" identifier [ (binary_expression "unaff_EDI + 0x10" identifier + number_literal) ]) = number_literal) ;) (expression_statement "*(undefined8 *)(param_1 + 0x1bc) = local_5c;" (assignment_expression "*(undefined8 *)(param_1 + 0x1bc) = local_5c" (pointer_expression "*(undefined8 *)(param_1 + 0x1bc)" * (cast_expression "(undefined8 *)(param_1 + 0x1bc)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1bc)" ( (binary_expression "param_1 + 0x1bc" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (goto_statement "goto LAB_0008822e;" goto statement_identifier ;) (labeled_statement "code_r0x00087faf:\n  if (*(char *)(iVar8 + 0x318d) == '\0') {\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }" statement_identifier : (if_statement "if (*(char *)(iVar8 + 0x318d) == '\0') {\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }" if (parenthesized_expression "(*(char *)(iVar8 + 0x318d) == '\0')" ( (binary_expression "*(char *)(iVar8 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x318d)" * (cast_expression "(char *)(iVar8 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x318d)" ( (binary_expression "iVar8 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }" { (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" identifier = identifier) ;) (expression_statement "FUN_00109060(iVar9 + 0xac,local_94,local_8c);" (call_expression "FUN_00109060(iVar9 + 0xac,local_94,local_8c)" identifier (argument_list "(iVar9 + 0xac,local_94,local_8c)" ( (binary_expression "iVar9 + 0xac" identifier + number_literal) , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" identifier = (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" * (cast_expression "(int *)(*(int *)pbVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar1 + 8)" ( (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" * (cast_expression "(int *)pbVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" identifier = identifier) ;) (labeled_statement "LAB_00088468:\n    local_68 = 1;" statement_identifier : (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" identifier = number_literal) ;)) (if_statement "if (iVar8 == 0) goto LAB_00088477;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00088477;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_00087fc3;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT , (binary_expression IDENT + IDENT) , (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) }))) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT )))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) }))) })))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - IDENT) & (unary_expression - IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) & (unary_expression - (parenthesized_expression ( (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT <= IDENT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) <= (binary_expression IDENT - IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT <= IDENT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) <= (binary_expression IDENT - IDENT))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) )) + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , IDENT )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT < IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT - IDENT) == LIT) && (binary_expression IDENT == LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression IDENT + LIT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression IDENT + LIT) ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression & IDENT) + IDENT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) }))) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) , (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) ;) })))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) (goto_statement goto statement_identifier ;) })))
(function_definition "void FUN_00087d20(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5)\n\n{\n  byte *pbVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  int *piVar12;\n  code *pcVar13;\n  uint uVar14;\n  int extraout_ECX;\n  uint uVar15;\n  int iVar16;\n  uint uVar17;\n  uint uVar18;\n  int unaff_EDI;\n  undefined8 uVar19;\n  longlong lVar20;\n  undefined8 *local_b0;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int *local_94;\n  int local_90;\n  int *local_8c;\n  int local_88;\n  int local_80;\n  int local_74;\n  int local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined8 local_5c;\n  \n  FUN_0004fb7e();\n  local_74 = 0;\n  local_70 = 0;\n  if (*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);\n  }\n  FUN_0007d2c0(param_1,param_5,param_2);\n  FUN_00082750(param_1);\n  pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;\n  iVar9 = *(int *)pbVar1;\n  uVar19 = local_5c;\n  if (*(int *)(iVar9 + 8) == 0) goto LAB_00088477;\n  if (*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    \n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    \n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }\n    local_8c = (int *)FUN_0017ebf0(0x24);\n                    \n    FUN_000ba6d0(local_8c,param_1 + 0x124);\n  }\n  else {\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }\nLAB_00087db2:\n  local_94 = (int *)FUN_0017ebf0(0x34);\n                    \n  FUN_000ba800(local_94,param_4,param_3,local_8c);\n  local_b0 = &local_5c;\n  local_5c._0_4_ = local_94;\n  FUN_0008a170(param_1 + 0x148,local_b0);\n  if (local_8c != (int *)0x0) {\n    local_5c._0_4_ = local_8c;\n    FUN_0008a170(param_1 + 0x148,local_b0);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n    pcVar13 = *(code **)(*param_4 + 0x68);\n    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    \n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }\nLAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);\nLAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;\n  }\n  else {\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }\n  FUN_00083a60(param_1);\nLAB_00087e72:\n  local_88 = 0;\nLAB_00087e80:\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }\n  local_5c = uVar19;\n  iVar8 = FUN_000aa690(iVar9);\n  iVar9 = 0;\n  if (iVar8 == 0) {\n    iVar9 = local_80;\n  }\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  uVar19 = local_5c;\n  if (iVar8 != 0) {\n    iVar16 = param_4[1];\n    if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }\n    iVar16 = local_90;\n    if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (iVar9 == 0) goto LAB_00087f2e;\n    local_80 = iVar9;\n    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar7 != '\0') goto LAB_000887ba;\n    if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }\n    if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }\n    uVar14 = local_94[3] + local_8c[3];\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar8 == 0) {\n                    \n      FUN_0007a620();\n    }\n    local_a0 = *(int *)(iVar8 + 0x521c);\n    local_a4 = *(int *)(iVar8 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }\n    uVar3 = *(uint *)(iVar9 + 0x164);\n    uVar4 = *(uint *)(iVar9 + 0x168);\n    uVar17 = uVar3 - uVar14 & -local_a4;\n    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar11 = uVar3 - uVar17;\n    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar7 != '\0') goto LAB_00087f7a;\n    local_80 = 0;\n    uVar19 = local_5c;\nLAB_00087f52:\n    local_5c = uVar19;\n    if (iVar16 != 0) goto LAB_00087f5a;\n    iVar9 = *(int *)(param_1 + 4);\n    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;\nLAB_00087fc3:\n    iVar9 = local_88;\n    local_68 = 1;\n    local_5c = uVar19;\n    if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar9 + 1;\n    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);\n    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }\n    uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n    piVar12 = *(int **)(param_1 + 0x13c);\n    iVar9 = local_68;\n    if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }\nLAB_00088157:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar7 = FUN_0007a5f0();\n    iVar8 = extraout_ECX;\n    iVar16 = local_90;\nLAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    iVar9 = *(int *)(param_1 + 4);\n    uVar19 = local_5c;\n    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;\nLAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;\n    if (iVar8 != 0) goto code_r0x00087faf;\n  }\n  goto LAB_00088477;\nLAB_0008822e:\n  piVar2 = (int *)*piVar12;\n  if (piVar2[0x18] == -1) {\n    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }\n    iVar9 = iVar9 + 1;\n    piVar12 = piVar12 + 1;\n    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;\n    goto LAB_0008822e;\n  }\n  piVar12 = piVar12 + 1;\n  if (*(int **)(param_1 + 0x140) == piVar12) {\nLAB_00088259:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_0007d3e0(param_1,uVar10,local_b0);\n    uVar19 = local_5c;\n    if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }\n    local_5c = uVar19;\n    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined8 *)(param_1 + 0x1bc) = local_5c;\n    return;\n  }\n  goto LAB_0008822e;\ncode_r0x00087faf:\n  if (*(char *)(iVar8 + 0x318d) == '\0') {\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }\n  goto LAB_00087fc3;\n}" (primitive_type "void") (function_declarator "FUN_00087d20(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5)" (identifier "FUN_00087d20") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  int *piVar12;\n  code *pcVar13;\n  uint uVar14;\n  int extraout_ECX;\n  uint uVar15;\n  int iVar16;\n  uint uVar17;\n  uint uVar18;\n  int unaff_EDI;\n  undefined8 uVar19;\n  longlong lVar20;\n  undefined8 *local_b0;\n  int local_a4;\n  int local_a0;\n  int local_9c;\n  int local_98;\n  int *local_94;\n  int local_90;\n  int *local_8c;\n  int local_88;\n  int local_80;\n  int local_74;\n  int local_70;\n  undefined4 local_6c;\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined8 local_5c;\n  \n  FUN_0004fb7e();\n  local_74 = 0;\n  local_70 = 0;\n  if (*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);\n  }\n  FUN_0007d2c0(param_1,param_5,param_2);\n  FUN_00082750(param_1);\n  pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;\n  iVar9 = *(int *)pbVar1;\n  uVar19 = local_5c;\n  if (*(int *)(iVar9 + 8) == 0) goto LAB_00088477;\n  if (*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    \n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    \n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }\n    local_8c = (int *)FUN_0017ebf0(0x24);\n                    \n    FUN_000ba6d0(local_8c,param_1 + 0x124);\n  }\n  else {\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }\nLAB_00087db2:\n  local_94 = (int *)FUN_0017ebf0(0x34);\n                    \n  FUN_000ba800(local_94,param_4,param_3,local_8c);\n  local_b0 = &local_5c;\n  local_5c._0_4_ = local_94;\n  FUN_0008a170(param_1 + 0x148,local_b0);\n  if (local_8c != (int *)0x0) {\n    local_5c._0_4_ = local_8c;\n    FUN_0008a170(param_1 + 0x148,local_b0);\n  }\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n    pcVar13 = *(code **)(*param_4 + 0x68);\n    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    \n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }\nLAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);\nLAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;\n  }\n  else {\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }\n  FUN_00083a60(param_1);\nLAB_00087e72:\n  local_88 = 0;\nLAB_00087e80:\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }\n  local_5c = uVar19;\n  iVar8 = FUN_000aa690(iVar9);\n  iVar9 = 0;\n  if (iVar8 == 0) {\n    iVar9 = local_80;\n  }\n  iVar8 = *(int *)(*(int *)pbVar1 + 8);\n  uVar19 = local_5c;\n  if (iVar8 != 0) {\n    iVar16 = param_4[1];\n    if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }\n    iVar16 = local_90;\n    if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (iVar9 == 0) goto LAB_00087f2e;\n    local_80 = iVar9;\n    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar7 != '\0') goto LAB_000887ba;\n    if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }\n    if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }\n    uVar14 = local_94[3] + local_8c[3];\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar8 == 0) {\n                    \n      FUN_0007a620();\n    }\n    local_a0 = *(int *)(iVar8 + 0x521c);\n    local_a4 = *(int *)(iVar8 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }\n    uVar3 = *(uint *)(iVar9 + 0x164);\n    uVar4 = *(uint *)(iVar9 + 0x168);\n    uVar17 = uVar3 - uVar14 & -local_a4;\n    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar11 = uVar3 - uVar17;\n    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar7 != '\0') goto LAB_00087f7a;\n    local_80 = 0;\n    uVar19 = local_5c;\nLAB_00087f52:\n    local_5c = uVar19;\n    if (iVar16 != 0) goto LAB_00087f5a;\n    iVar9 = *(int *)(param_1 + 4);\n    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;\nLAB_00087fc3:\n    iVar9 = local_88;\n    local_68 = 1;\n    local_5c = uVar19;\n    if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar9 + 1;\n    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);\n    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }\n    uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n    piVar12 = *(int **)(param_1 + 0x13c);\n    iVar9 = local_68;\n    if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }\nLAB_00088157:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar7 = FUN_0007a5f0();\n    iVar8 = extraout_ECX;\n    iVar16 = local_90;\nLAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    iVar9 = *(int *)(param_1 + 4);\n    uVar19 = local_5c;\n    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;\nLAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;\n    if (iVar8 != 0) goto code_r0x00087faf;\n  }\n  goto LAB_00088477;\nLAB_0008822e:\n  piVar2 = (int *)*piVar12;\n  if (piVar2[0x18] == -1) {\n    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }\n    iVar9 = iVar9 + 1;\n    piVar12 = piVar12 + 1;\n    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;\n    goto LAB_0008822e;\n  }\n  piVar12 = piVar12 + 1;\n  if (*(int **)(param_1 + 0x140) == piVar12) {\nLAB_00088259:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_0007d3e0(param_1,uVar10,local_b0);\n    uVar19 = local_5c;\n    if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }\n    local_5c = uVar19;\n    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined8 *)(param_1 + 0x1bc) = local_5c;\n    return;\n  }\n  goto LAB_0008822e;\ncode_r0x00087faf:\n  if (*(char *)(iVar8 + 0x318d) == '\0') {\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }\n  goto LAB_00087fc3;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "char cVar7;" (primitive_type "char") (identifier "cVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "code *pcVar13;" (type_identifier "code") (pointer_declarator "*pcVar13" (* "*") (identifier "pcVar13")) (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "int extraout_ECX;" (primitive_type "int") (identifier "extraout_ECX") (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "undefined8 uVar19;" (type_identifier "undefined8") (identifier "uVar19") (; ";")) (declaration "longlong lVar20;" (type_identifier "longlong") (identifier "lVar20") (; ";")) (declaration "undefined8 *local_b0;" (type_identifier "undefined8") (pointer_declarator "*local_b0" (* "*") (identifier "local_b0")) (; ";")) (declaration "int local_a4;" (primitive_type "int") (identifier "local_a4") (; ";")) (declaration "int local_a0;" (primitive_type "int") (identifier "local_a0") (; ";")) (declaration "int local_9c;" (primitive_type "int") (identifier "local_9c") (; ";")) (declaration "int local_98;" (primitive_type "int") (identifier "local_98") (; ";")) (declaration "int *local_94;" (primitive_type "int") (pointer_declarator "*local_94" (* "*") (identifier "local_94")) (; ";")) (declaration "int local_90;" (primitive_type "int") (identifier "local_90") (; ";")) (declaration "int *local_8c;" (primitive_type "int") (pointer_declarator "*local_8c" (* "*") (identifier "local_8c")) (; ";")) (declaration "int local_88;" (primitive_type "int") (identifier "local_88") (; ";")) (declaration "int local_80;" (primitive_type "int") (identifier "local_80") (; ";")) (declaration "int local_74;" (primitive_type "int") (identifier "local_74") (; ";")) (declaration "int local_70;" (primitive_type "int") (identifier "local_70") (; ";")) (declaration "undefined4 local_6c;" (type_identifier "undefined4") (identifier "local_6c") (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "undefined4 local_64;" (type_identifier "undefined4") (identifier "local_64") (; ";")) (declaration "undefined4 local_60;" (type_identifier "undefined4") (identifier "local_60") (; ";")) (declaration "undefined8 local_5c;" (type_identifier "undefined8") (identifier "local_5c") (; ";")) (expression_statement "FUN_0004fb7e();" (call_expression "FUN_0004fb7e()" (identifier "FUN_0004fb7e") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" (identifier "local_74") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" (identifier "local_70") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)) {\n    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);\n  }" (if "if") (parenthesized_expression "(*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137))" (( "(") (binary_expression "*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)" (pointer_expression "*(code **)(*param_4 + 0x10)" (* "*") (cast_expression "(code **)(*param_4 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_4 + 0x10)" (( "(") (binary_expression "*param_4 + 0x10" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (cast_expression "(code *)(unaff_EDI + 0x1137)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1137)" (( "(") (binary_expression "unaff_EDI + 0x1137" (identifier "unaff_EDI") (+ "+") (number_literal "0x1137")) () ")")))) () ")")) (compound_statement "{\n    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);\n  }" ({ "{") (expression_statement "(**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);" (call_expression "(**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3)" (parenthesized_expression "(**(code **)(*param_4 + 0x10))" (( "(") (pointer_expression "**(code **)(*param_4 + 0x10)" (* "*") (pointer_expression "*(code **)(*param_4 + 0x10)" (* "*") (cast_expression "(code **)(*param_4 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_4 + 0x10)" (( "(") (binary_expression "*param_4 + 0x10" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(param_4,param_1,param_2,param_3)" (( "(") (identifier "param_4") (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0007d2c0(param_1,param_5,param_2);" (call_expression "FUN_0007d2c0(param_1,param_5,param_2)" (identifier "FUN_0007d2c0") (argument_list "(param_1,param_5,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_5") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "FUN_00082750(param_1);" (call_expression "FUN_00082750(param_1)" (identifier "FUN_00082750") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;" (assignment_expression "pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22" (identifier "pbVar1") (= "=") (binary_expression "BYTE_ARRAY_0027a62d + unaff_EDI + 0x22" (binary_expression "BYTE_ARRAY_0027a62d + unaff_EDI" (identifier "BYTE_ARRAY_0027a62d") (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "0x22"))) (; ";")) (expression_statement "iVar9 = *(int *)pbVar1;" (assignment_expression "iVar9 = *(int *)pbVar1" (identifier "iVar9") (= "=") (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1")))) (; ";")) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" (identifier "uVar19") (= "=") (identifier "local_5c")) (; ";")) (if_statement "if (*(int *)(iVar9 + 8) == 0) goto LAB_00088477;" (if "if") (parenthesized_expression "(*(int *)(iVar9 + 8) == 0)" (( "(") (binary_expression "*(int *)(iVar9 + 8) == 0" (pointer_expression "*(int *)(iVar9 + 8)" (* "*") (cast_expression "(int *)(iVar9 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 8)" (( "(") (binary_expression "iVar9 + 8" (identifier "iVar9") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00088477;" (goto "goto") (statement_identifier "LAB_00088477") (; ";"))) (if_statement "if (*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0') {\n    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    \n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    \n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }\n    local_8c = (int *)FUN_0017ebf0(0x24);\n                    \n    FUN_000ba6d0(local_8c,param_1 + 0x124);\n  }\n  else {\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0')" (( "(") (binary_expression "*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar9 + 8) + 0x318d)" (* "*") (cast_expression "(char *)(*(int *)(iVar9 + 8) + 0x318d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar9 + 8) + 0x318d)" (( "(") (binary_expression "*(int *)(iVar9 + 8) + 0x318d" (pointer_expression "*(int *)(iVar9 + 8)" (* "*") (cast_expression "(int *)(iVar9 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 8)" (( "(") (binary_expression "iVar9 + 8" (identifier "iVar9") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x318d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;\n    if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    \n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    \n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }\n    local_8c = (int *)FUN_0017ebf0(0x24);\n                    \n    FUN_000ba6d0(local_8c,param_1 + 0x124);\n  }" ({ "{") (if_statement "if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;" (if "if") (parenthesized_expression "(*(char *)(iVar9 + 0x10) == '\0')" (( "(") (binary_expression "*(char *)(iVar9 + 0x10) == '\0'" (pointer_expression "*(char *)(iVar9 + 0x10)" (* "*") (cast_expression "(char *)(iVar9 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x10)" (( "(") (binary_expression "iVar9 + 0x10" (identifier "iVar9") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00088c31;" (goto "goto") (statement_identifier "LAB_00088c31") (; ";"))) (if_statement "if (*(char *)(iVar9 + 0x11) == '\0') {\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    \n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    \n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }\n    else {\n      local_90 = 0;\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar9 + 0x11) == '\0')" (( "(") (binary_expression "*(char *)(iVar9 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar9 + 0x11)" (* "*") (cast_expression "(char *)(iVar9 + 0x11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x11)" (( "(") (binary_expression "iVar9 + 0x11" (identifier "iVar9") (+ "+") (number_literal "0x11")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar9 = *(int *)(param_1 + 4);\n      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }\n      local_68 = 0;\n      local_64 = 0;\n      local_60 = 0;\n                    \n      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);\n                    \n      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);\n      iVar9 = *(int *)(*(int *)pbVar1 + 8);\n      if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }\n      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }\n      FUN_000817a0(param_1,param_2,param_3);\n      FUN_001215b0(param_1 + 0xa0);\n      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);\n      FUN_0007d800(param_1,param_3);\n      FUN_001459e0(&local_5c);\n      if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }\n      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;\n      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }\n    }" ({ "{") (expression_statement "iVar9 = *(int *)(param_1 + 4);" (assignment_expression "iVar9 = *(int *)(param_1 + 4)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }" (if "if") (parenthesized_expression "((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0))" (( "(") (binary_expression "(*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)" (parenthesized_expression "(*(char *)(iVar9 + 0xac) == '\0')" (( "(") (binary_expression "*(char *)(iVar9 + 0xac) == '\0'" (pointer_expression "*(char *)(iVar9 + 0xac)" (* "*") (cast_expression "(char *)(iVar9 + 0xac)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xac)" (( "(") (binary_expression "iVar9 + 0xac" (identifier "iVar9") (+ "+") (number_literal "0xac")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)" (( "(") (comma_expression "local_90 = 0, *(int *)(iVar9 + 0xbc) == 0" (assignment_expression "local_90 = 0" (identifier "local_90") (= "=") (number_literal "0")) (, ",") (binary_expression "*(int *)(iVar9 + 0xbc) == 0" (pointer_expression "*(int *)(iVar9 + 0xbc)" (* "*") (cast_expression "(int *)(iVar9 + 0xbc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xbc)" (( "(") (binary_expression "iVar9 + 0xbc" (identifier "iVar9") (+ "+") (number_literal "0xbc")) () ")")))) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        local_90 = FUN_0007f710(param_1,6,4);\n        iVar9 = *(int *)(param_1 + 4);\n      }" ({ "{") (expression_statement "local_90 = FUN_0007f710(param_1,6,4);" (assignment_expression "local_90 = FUN_0007f710(param_1,6,4)" (identifier "local_90") (= "=") (call_expression "FUN_0007f710(param_1,6,4)" (identifier "FUN_0007f710") (argument_list "(param_1,6,4)" (( "(") (identifier "param_1") (, ",") (number_literal "6") (, ",") (number_literal "4") () ")")))) (; ";")) (expression_statement "iVar9 = *(int *)(param_1 + 4);" (assignment_expression "iVar9 = *(int *)(param_1 + 4)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" (identifier "local_68") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);" (call_expression "FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0)" (identifier "FUN_00146780") (argument_list "(&local_5c,iVar9 + 0x68,param_1 + 0xa0)" (( "(") (pointer_expression "&local_5c" (& "&") (identifier "local_5c")) (, ",") (binary_expression "iVar9 + 0x68" (identifier "iVar9") (+ "+") (number_literal "0x68")) (, ",") (binary_expression "param_1 + 0xa0" (identifier "param_1") (+ "+") (number_literal "0xa0")) () ")"))) (; ";")) (expression_statement "FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);" (call_expression "FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c)" (identifier "FUN_00085d40") (argument_list "(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (pointer_expression "&local_6c" (& "&") (identifier "local_6c")) (, ",") (pointer_expression "&local_74" (& "&") (identifier "local_74")) (, ",") (pointer_expression "&local_70" (& "&") (identifier "local_70")) (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) (, ",") (pointer_expression "&local_5c" (& "&") (identifier "local_5c")) () ")"))) (; ";")) (expression_statement "iVar9 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar9 = *(int *)(*(int *)pbVar1 + 8)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar9 == 0) {\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                    \n        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);\n      }" ({ "{") (expression_statement "FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0)" (( "(") (binary_expression "unaff_EDI + 0x198c47" (identifier "unaff_EDI") (+ "+") (number_literal "0x198c47")) (, ",") (number_literal "0x5c") (, ",") (binary_expression "unaff_EDI + 0x19c67f" (identifier "unaff_EDI") (+ "+") (number_literal "0x19c67f")) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (if_statement "if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)) {\n                    \n        FUN_00086960(param_1,param_4);\n      }" (if "if") (parenthesized_expression "(((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0))" (( "(") (binary_expression "((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&\n         (*(int *)(param_1 + 0x16c) == 0)" (parenthesized_expression "((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0))" (( "(") (binary_expression "(*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)" (parenthesized_expression "(*(char *)(iVar9 + 0x1a25) == '\0')" (( "(") (binary_expression "*(char *)(iVar9 + 0x1a25) == '\0'" (pointer_expression "*(char *)(iVar9 + 0x1a25)" (* "*") (cast_expression "(char *)(iVar9 + 0x1a25)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x1a25)" (( "(") (binary_expression "iVar9 + 0x1a25" (identifier "iVar9") (+ "+") (number_literal "0x1a25")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(*(int *)(iVar9 + 0x1f64) != 0)" (( "(") (binary_expression "*(int *)(iVar9 + 0x1f64) != 0" (pointer_expression "*(int *)(iVar9 + 0x1f64)" (* "*") (cast_expression "(int *)(iVar9 + 0x1f64)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x1f64)" (( "(") (binary_expression "iVar9 + 0x1f64" (identifier "iVar9") (+ "+") (number_literal "0x1f64")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 0x16c) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x16c) == 0" (pointer_expression "*(int *)(param_1 + 0x16c)" (* "*") (cast_expression "(int *)(param_1 + 0x16c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x16c)" (( "(") (binary_expression "param_1 + 0x16c" (identifier "param_1") (+ "+") (number_literal "0x16c")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n        FUN_00086960(param_1,param_4);\n      }" ({ "{") (expression_statement "FUN_00086960(param_1,param_4);" (call_expression "FUN_00086960(param_1,param_4)" (identifier "FUN_00086960") (argument_list "(param_1,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "param_4") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_000817a0(param_1,param_2,param_3);" (call_expression "FUN_000817a0(param_1,param_2,param_3)" (identifier "FUN_000817a0") (argument_list "(param_1,param_2,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "FUN_001215b0(param_1 + 0xa0);" (call_expression "FUN_001215b0(param_1 + 0xa0)" (identifier "FUN_001215b0") (argument_list "(param_1 + 0xa0)" (( "(") (binary_expression "param_1 + 0xa0" (identifier "param_1") (+ "+") (number_literal "0xa0")) () ")"))) (; ";")) (expression_statement "FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);" (call_expression "FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c)" (identifier "FUN_00086870") (argument_list "(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_5c" (& "&") (identifier "local_5c")) (, ",") (identifier "param_3") (, ",") (binary_expression "local_70 + local_74" (identifier "local_70") (+ "+") (identifier "local_74")) (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) (, ",") (identifier "local_6c") () ")"))) (; ";")) (expression_statement "FUN_0007d800(param_1,param_3);" (call_expression "FUN_0007d800(param_1,param_3)" (identifier "FUN_0007d800") (argument_list "(param_1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "FUN_001459e0(&local_5c);" (call_expression "FUN_001459e0(&local_5c)" (identifier "FUN_001459e0") (argument_list "(&local_5c)" (( "(") (pointer_expression "&local_5c" (& "&") (identifier "local_5c")) () ")"))) (; ";")) (if_statement "if (local_68 != 0) {\n        FUN_001807a0(local_68);\n      }" (if "if") (parenthesized_expression "(local_68 != 0)" (( "(") (binary_expression "local_68 != 0" (identifier "local_68") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_001807a0(local_68);\n      }" ({ "{") (expression_statement "FUN_001807a0(local_68);" (call_expression "FUN_001807a0(local_68)" (identifier "FUN_001807a0") (argument_list "(local_68)" (( "(") (identifier "local_68") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);" (assignment_expression "uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c)" (identifier "uVar19") (= "=") (call_expression "CONCAT44(local_5c._4_4_,(int *)local_5c)" (identifier "CONCAT44") (argument_list "(local_5c._4_4_,(int *)local_5c)" (( "(") (field_expression "local_5c._4_4_" (identifier "local_5c") (. ".") (field_identifier "_4_4_")) (, ",") (cast_expression "(int *)local_5c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_5c")) () ")")))) (; ";")) (if_statement "if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;" (if "if") (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) == 0)" (( "(") (binary_expression "*(int *)(*(int *)pbVar1 + 8) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00088477;" (goto "goto") (statement_identifier "LAB_00088477") (; ";"))) (if_statement "if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0')" (( "(") (binary_expression "*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0'" (pointer_expression "*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d)" (* "*") (cast_expression "(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) + 0x318d)" (( "(") (binary_expression "*(int *)(*(int *)pbVar1 + 8) + 0x318d" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x318d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        local_8c = (int *)0x0;\n        goto LAB_00087db2;\n      }" ({ "{") (expression_statement "local_8c = (int *)0x0;" (assignment_expression "local_8c = (int *)0x0" (identifier "local_8c") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00087db2;" (goto "goto") (statement_identifier "LAB_00087db2") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      local_90 = 0;\n    }" (else "else") (compound_statement "{\n      local_90 = 0;\n    }" ({ "{") (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" (identifier "local_90") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "local_8c = (int *)FUN_0017ebf0(0x24);" (assignment_expression "local_8c = (int *)FUN_0017ebf0(0x24)" (identifier "local_8c") (= "=") (cast_expression "(int *)FUN_0017ebf0(0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017ebf0(0x24)" (identifier "FUN_0017ebf0") (argument_list "(0x24)" (( "(") (number_literal "0x24") () ")"))))) (; ";")) (expression_statement "FUN_000ba6d0(local_8c,param_1 + 0x124);" (call_expression "FUN_000ba6d0(local_8c,param_1 + 0x124)" (identifier "FUN_000ba6d0") (argument_list "(local_8c,param_1 + 0x124)" (( "(") (identifier "local_8c") (, ",") (binary_expression "param_1 + 0x124" (identifier "param_1") (+ "+") (number_literal "0x124")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }" (else "else") (compound_statement "{\n    local_90 = 0;\n    local_8c = (int *)0x0;\n  }" ({ "{") (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" (identifier "local_90") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_8c = (int *)0x0;" (assignment_expression "local_8c = (int *)0x0" (identifier "local_8c") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (labeled_statement "LAB_00087db2:\n  local_94 = (int *)FUN_0017ebf0(0x34);" (statement_identifier "LAB_00087db2") (: ":") (expression_statement "local_94 = (int *)FUN_0017ebf0(0x34);" (assignment_expression "local_94 = (int *)FUN_0017ebf0(0x34)" (identifier "local_94") (= "=") (cast_expression "(int *)FUN_0017ebf0(0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017ebf0(0x34)" (identifier "FUN_0017ebf0") (argument_list "(0x34)" (( "(") (number_literal "0x34") () ")"))))) (; ";"))) (expression_statement "FUN_000ba800(local_94,param_4,param_3,local_8c);" (call_expression "FUN_000ba800(local_94,param_4,param_3,local_8c)" (identifier "FUN_000ba800") (argument_list "(local_94,param_4,param_3,local_8c)" (( "(") (identifier "local_94") (, ",") (identifier "param_4") (, ",") (identifier "param_3") (, ",") (identifier "local_8c") () ")"))) (; ";")) (expression_statement "local_b0 = &local_5c;" (assignment_expression "local_b0 = &local_5c" (identifier "local_b0") (= "=") (pointer_expression "&local_5c" (& "&") (identifier "local_5c"))) (; ";")) (expression_statement "local_5c._0_4_ = local_94;" (assignment_expression "local_5c._0_4_ = local_94" (field_expression "local_5c._0_4_" (identifier "local_5c") (. ".") (field_identifier "_0_4_")) (= "=") (identifier "local_94")) (; ";")) (expression_statement "FUN_0008a170(param_1 + 0x148,local_b0);" (call_expression "FUN_0008a170(param_1 + 0x148,local_b0)" (identifier "FUN_0008a170") (argument_list "(param_1 + 0x148,local_b0)" (( "(") (binary_expression "param_1 + 0x148" (identifier "param_1") (+ "+") (number_literal "0x148")) (, ",") (identifier "local_b0") () ")"))) (; ";")) (if_statement "if (local_8c != (int *)0x0) {\n    local_5c._0_4_ = local_8c;\n    FUN_0008a170(param_1 + 0x148,local_b0);\n  }" (if "if") (parenthesized_expression "(local_8c != (int *)0x0)" (( "(") (binary_expression "local_8c != (int *)0x0" (identifier "local_8c") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    local_5c._0_4_ = local_8c;\n    FUN_0008a170(param_1 + 0x148,local_b0);\n  }" ({ "{") (expression_statement "local_5c._0_4_ = local_8c;" (assignment_expression "local_5c._0_4_ = local_8c" (field_expression "local_5c._0_4_" (identifier "local_5c") (. ".") (field_identifier "_0_4_")) (= "=") (identifier "local_8c")) (; ";")) (expression_statement "FUN_0008a170(param_1 + 0x148,local_b0);" (call_expression "FUN_0008a170(param_1 + 0x148,local_b0)" (identifier "FUN_0008a170") (argument_list "(param_1 + 0x148,local_b0)" (( "(") (binary_expression "param_1 + 0x148" (identifier "param_1") (+ "+") (number_literal "0x148")) (, ",") (identifier "local_b0") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n    pcVar13 = *(code **)(*param_4 + 0x68);\n    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    \n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }\nLAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);\nLAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;\n  }\n  else {\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0')" (( "(") (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" (* "*") (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" (( "(") (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0xac")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 != 0) goto LAB_00087e3a;\nLAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);\n    pcVar13 = *(code **)(*param_4 + 0x68);\n    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    \n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }\nLAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);\nLAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;\n  }" ({ "{") (expression_statement "iVar9 = *(int *)pbVar1;" (assignment_expression "iVar9 = *(int *)pbVar1" (identifier "iVar9") (= "=") (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1")))) (; ";")) (expression_statement "iVar8 = *(int *)(iVar9 + 8);" (assignment_expression "iVar8 = *(int *)(iVar9 + 8)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar9 + 8)" (* "*") (cast_expression "(int *)(iVar9 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 8)" (( "(") (binary_expression "iVar9 + 8" (identifier "iVar9") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar8 != 0) goto LAB_00087e3a;" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00087e3a;" (goto "goto") (statement_identifier "LAB_00087e3a") (; ";"))) (labeled_statement "LAB_00088adb:\n    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);" (statement_identifier "LAB_00088adb") (: ":") (expression_statement "uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);" (assignment_expression "uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c)" (identifier "uVar19") (= "=") (call_expression "CONCAT44(local_5c._4_4_,(int *)local_5c)" (identifier "CONCAT44") (argument_list "(local_5c._4_4_,(int *)local_5c)" (( "(") (field_expression "local_5c._4_4_" (identifier "local_5c") (. ".") (field_identifier "_4_4_")) (, ",") (cast_expression "(int *)local_5c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_5c")) () ")")))) (; ";"))) (expression_statement "pcVar13 = *(code **)(*param_4 + 0x68);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x68)" (identifier "pcVar13") (= "=") (pointer_expression "*(code **)(*param_4 + 0x68)" (* "*") (cast_expression "(code **)(*param_4 + 0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_4 + 0x68)" (( "(") (binary_expression "*param_4 + 0x68" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (if_statement "if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {\nLAB_00088477:\n      local_5c = uVar19;\n                    \n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }" (if "if") (parenthesized_expression "(pcVar13 == (code *)(unaff_EDI + 0x1497))" (( "(") (binary_expression "pcVar13 == (code *)(unaff_EDI + 0x1497)" (identifier "pcVar13") (== "==") (cast_expression "(code *)(unaff_EDI + 0x1497)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1497)" (( "(") (binary_expression "unaff_EDI + 0x1497" (identifier "unaff_EDI") (+ "+") (number_literal "0x1497")) () ")")))) () ")")) (compound_statement "{\nLAB_00088477:\n      local_5c = uVar19;\n                    \n      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);\n    }" ({ "{") (labeled_statement "LAB_00088477:\n      local_5c = uVar19;" (statement_identifier "LAB_00088477") (: ":") (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" (identifier "local_5c") (= "=") (identifier "uVar19")) (; ";"))) (expression_statement "FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f)" (( "(") (binary_expression "unaff_EDI + 0x198c47" (identifier "unaff_EDI") (+ "+") (number_literal "0x198c47")) (, ",") (number_literal "0x5c") (, ",") (binary_expression "unaff_EDI + 0x19c67f" (identifier "unaff_EDI") (+ "+") (number_literal "0x19c67f")) () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_00088af4:\n    cVar7 = (*pcVar13)(param_4);" (statement_identifier "LAB_00088af4") (: ":") (expression_statement "cVar7 = (*pcVar13)(param_4);" (assignment_expression "cVar7 = (*pcVar13)(param_4)" (identifier "cVar7") (= "=") (call_expression "(*pcVar13)(param_4)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";"))) (labeled_statement "LAB_00087e60:\n    if (cVar7 == '\0') goto LAB_00087e72;" (statement_identifier "LAB_00087e60") (: ":") (if_statement "if (cVar7 == '\0') goto LAB_00087e72;" (if "if") (parenthesized_expression "(cVar7 == '\0')" (( "(") (binary_expression "cVar7 == '\0'" (identifier "cVar7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00087e72;" (goto "goto") (statement_identifier "LAB_00087e72") (; ";")))) (} "}")) (else_clause "else {\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }" (else "else") (compound_statement "{\n    FUN_0007d230(param_1);\n    iVar9 = *(int *)pbVar1;\n    iVar8 = *(int *)(iVar9 + 8);\n    if (iVar8 == 0) goto LAB_00088adb;\nLAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }\n  }" ({ "{") (expression_statement "FUN_0007d230(param_1);" (call_expression "FUN_0007d230(param_1)" (identifier "FUN_0007d230") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "iVar9 = *(int *)pbVar1;" (assignment_expression "iVar9 = *(int *)pbVar1" (identifier "iVar9") (= "=") (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1")))) (; ";")) (expression_statement "iVar8 = *(int *)(iVar9 + 8);" (assignment_expression "iVar8 = *(int *)(iVar9 + 8)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar9 + 8)" (* "*") (cast_expression "(int *)(iVar9 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 8)" (( "(") (binary_expression "iVar9 + 8" (identifier "iVar9") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar8 == 0) goto LAB_00088adb;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00088adb;" (goto "goto") (statement_identifier "LAB_00088adb") (; ";"))) (labeled_statement "LAB_00087e3a:\n    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }" (statement_identifier "LAB_00087e3a") (: ":") (if_statement "if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }" (if "if") (parenthesized_expression "((*(byte *)(iVar9 + 0x14) & 8) == 0)" (( "(") (binary_expression "(*(byte *)(iVar9 + 0x14) & 8) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x14) & 8)" (( "(") (binary_expression "*(byte *)(iVar9 + 0x14) & 8" (pointer_expression "*(byte *)(iVar9 + 0x14)" (* "*") (cast_expression "(byte *)(iVar9 + 0x14)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x14)" (( "(") (binary_expression "iVar9 + 0x14" (identifier "iVar9") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;\n      cVar7 = *(char *)(iVar8 + 0x3209);\n      goto LAB_00087e60;\n    }" ({ "{") (expression_statement "pcVar13 = *(code **)(*param_4 + 0x68);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x68)" (identifier "pcVar13") (= "=") (pointer_expression "*(code **)(*param_4 + 0x68)" (* "*") (cast_expression "(code **)(*param_4 + 0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_4 + 0x68)" (( "(") (binary_expression "*param_4 + 0x68" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (if_statement "if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;" (if "if") (parenthesized_expression "(pcVar13 != (code *)(unaff_EDI + 0x1497))" (( "(") (binary_expression "pcVar13 != (code *)(unaff_EDI + 0x1497)" (identifier "pcVar13") (!= "!=") (cast_expression "(code *)(unaff_EDI + 0x1497)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1497)" (( "(") (binary_expression "unaff_EDI + 0x1497" (identifier "unaff_EDI") (+ "+") (number_literal "0x1497")) () ")")))) () ")")) (goto_statement "goto LAB_00088af4;" (goto "goto") (statement_identifier "LAB_00088af4") (; ";"))) (expression_statement "cVar7 = *(char *)(iVar8 + 0x3209);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x3209)" (identifier "cVar7") (= "=") (pointer_expression "*(char *)(iVar8 + 0x3209)" (* "*") (cast_expression "(char *)(iVar8 + 0x3209)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x3209)" (( "(") (binary_expression "iVar8 + 0x3209" (identifier "iVar8") (+ "+") (number_literal "0x3209")) () ")"))))) (; ";")) (goto_statement "goto LAB_00087e60;" (goto "goto") (statement_identifier "LAB_00087e60") (; ";")) (} "}")))) (} "}")))) (expression_statement "FUN_00083a60(param_1);" (call_expression "FUN_00083a60(param_1)" (identifier "FUN_00083a60") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (labeled_statement "LAB_00087e72:\n  local_88 = 0;" (statement_identifier "LAB_00087e72") (: ":") (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" (identifier "local_88") (= "=") (number_literal "0")) (; ";"))) (labeled_statement "LAB_00087e80:\n  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }" (statement_identifier "LAB_00087e80") (: ":") (if_statement "if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }\n  else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0')" (( "(") (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" (* "*") (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" (( "(") (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0xac")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\n    if (iVar9 == 0) goto LAB_00088477;\n    local_80 = 0;\n    if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }\n  }" ({ "{") (expression_statement "iVar9 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar9 = *(int *)(*(int *)pbVar1 + 8)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" (identifier "uVar19") (= "=") (identifier "local_5c")) (; ";")) (if_statement "if (iVar9 == 0) goto LAB_00088477;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00088477;" (goto "goto") (statement_identifier "LAB_00088477") (; ";"))) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" (identifier "local_80") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(char *)(iVar9 + 0x318d) == '\0') {\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar9 + 0x318d) == '\0')" (( "(") (binary_expression "*(char *)(iVar9 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar9 + 0x318d)" (* "*") (cast_expression "(char *)(iVar9 + 0x318d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x318d)" (( "(") (binary_expression "iVar9 + 0x318d" (identifier "iVar9") (+ "+") (number_literal "0x318d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      local_80 = FUN_00081670(param_1,param_4);\n      uVar19 = local_5c;\n      goto LAB_00088944;\n    }" ({ "{") (expression_statement "local_80 = FUN_00081670(param_1,param_4);" (assignment_expression "local_80 = FUN_00081670(param_1,param_4)" (identifier "local_80") (= "=") (call_expression "FUN_00081670(param_1,param_4)" (identifier "FUN_00081670") (argument_list "(param_1,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "param_4") () ")")))) (; ";")) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" (identifier "uVar19") (= "=") (identifier "local_5c")) (; ";")) (goto_statement "goto LAB_00088944;" (goto "goto") (statement_identifier "LAB_00088944") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }" (else "else") (compound_statement "{\n    local_80 = FUN_0007d1e0(param_1,param_3);\n    uVar19 = local_5c;\nLAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar9 == 0) goto LAB_00088477;\n  }" ({ "{") (expression_statement "local_80 = FUN_0007d1e0(param_1,param_3);" (assignment_expression "local_80 = FUN_0007d1e0(param_1,param_3)" (identifier "local_80") (= "=") (call_expression "FUN_0007d1e0(param_1,param_3)" (identifier "FUN_0007d1e0") (argument_list "(param_1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" (identifier "uVar19") (= "=") (identifier "local_5c")) (; ";")) (labeled_statement "LAB_00088944:\n    iVar9 = *(int *)(*(int *)pbVar1 + 8);" (statement_identifier "LAB_00088944") (: ":") (expression_statement "iVar9 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar9 = *(int *)(*(int *)pbVar1 + 8)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")"))))) (; ";"))) (if_statement "if (iVar9 == 0) goto LAB_00088477;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00088477;" (goto "goto") (statement_identifier "LAB_00088477") (; ";"))) (} "}"))))) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" (identifier "local_5c") (= "=") (identifier "uVar19")) (; ";")) (expression_statement "iVar8 = FUN_000aa690(iVar9);" (assignment_expression "iVar8 = FUN_000aa690(iVar9)" (identifier "iVar8") (= "=") (call_expression "FUN_000aa690(iVar9)" (identifier "FUN_000aa690") (argument_list "(iVar9)" (( "(") (identifier "iVar9") () ")")))) (; ";")) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar8 == 0) {\n    iVar9 = local_80;\n  }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar9 = local_80;\n  }" ({ "{") (expression_statement "iVar9 = local_80;" (assignment_expression "iVar9 = local_80" (identifier "iVar9") (= "=") (identifier "local_80")) (; ";")) (} "}"))) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" (identifier "uVar19") (= "=") (identifier "local_5c")) (; ";")) (if_statement "if (iVar8 != 0) {\n    iVar16 = param_4[1];\n    if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }\n    iVar16 = local_90;\n    if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (iVar9 == 0) goto LAB_00087f2e;\n    local_80 = iVar9;\n    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar7 != '\0') goto LAB_000887ba;\n    if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }\n    if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }\n    uVar14 = local_94[3] + local_8c[3];\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar8 == 0) {\n                    \n      FUN_0007a620();\n    }\n    local_a0 = *(int *)(iVar8 + 0x521c);\n    local_a4 = *(int *)(iVar8 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }\n    uVar3 = *(uint *)(iVar9 + 0x164);\n    uVar4 = *(uint *)(iVar9 + 0x168);\n    uVar17 = uVar3 - uVar14 & -local_a4;\n    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar11 = uVar3 - uVar17;\n    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar7 != '\0') goto LAB_00087f7a;\n    local_80 = 0;\n    uVar19 = local_5c;\nLAB_00087f52:\n    local_5c = uVar19;\n    if (iVar16 != 0) goto LAB_00087f5a;\n    iVar9 = *(int *)(param_1 + 4);\n    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;\nLAB_00087fc3:\n    iVar9 = local_88;\n    local_68 = 1;\n    local_5c = uVar19;\n    if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar9 + 1;\n    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);\n    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }\n    uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n    piVar12 = *(int **)(param_1 + 0x13c);\n    iVar9 = local_68;\n    if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }\nLAB_00088157:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar7 = FUN_0007a5f0();\n    iVar8 = extraout_ECX;\n    iVar16 = local_90;\nLAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    iVar9 = *(int *)(param_1 + 4);\n    uVar19 = local_5c;\n    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;\nLAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;\n    if (iVar8 != 0) goto code_r0x00087faf;\n  }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar16 = param_4[1];\n    if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }\n    iVar16 = local_90;\n    if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (iVar9 == 0) goto LAB_00087f2e;\n    local_80 = iVar9;\n    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }\n    if (cVar7 != '\0') goto LAB_000887ba;\n    if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }\n    if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }\n    uVar14 = local_94[3] + local_8c[3];\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    if (iVar8 == 0) {\n                    \n      FUN_0007a620();\n    }\n    local_a0 = *(int *)(iVar8 + 0x521c);\n    local_a4 = *(int *)(iVar8 + 0x5218);\n    if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }\n    uVar3 = *(uint *)(iVar9 + 0x164);\n    uVar4 = *(uint *)(iVar9 + 0x168);\n    uVar17 = uVar3 - uVar14 & -local_a4;\n    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));\n    uVar11 = uVar3 - uVar17;\n    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);\n    cVar7 = *(char *)(iVar8 + 0x318d);\n    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }\n    if (cVar7 != '\0') goto LAB_00087f7a;\n    local_80 = 0;\n    uVar19 = local_5c;\nLAB_00087f52:\n    local_5c = uVar19;\n    if (iVar16 != 0) goto LAB_00087f5a;\n    iVar9 = *(int *)(param_1 + 4);\n    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;\nLAB_00087fc3:\n    iVar9 = local_88;\n    local_68 = 1;\n    local_5c = uVar19;\n    if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }\nLAB_00088098:\n    local_88 = iVar9 + 1;\n    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);\n    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }\n    uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n    piVar12 = *(int **)(param_1 + 0x13c);\n    iVar9 = local_68;\n    if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }\nLAB_00088157:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);\n    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }\nLAB_00088c31:\n    cVar7 = FUN_0007a5f0();\n    iVar8 = extraout_ECX;\n    iVar16 = local_90;\nLAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    iVar9 = *(int *)(param_1 + 4);\n    uVar19 = local_5c;\n    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;\nLAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;\n    if (iVar8 != 0) goto code_r0x00087faf;\n  }" ({ "{") (expression_statement "iVar16 = param_4[1];" (assignment_expression "iVar16 = param_4[1]" (identifier "iVar16") (= "=") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (*(char *)(iVar16 + 0x30) == '\0') {\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }\n    else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar16 + 0x30) == '\0')" (( "(") (binary_expression "*(char *)(iVar16 + 0x30) == '\0'" (pointer_expression "*(char *)(iVar16 + 0x30)" (* "*") (cast_expression "(char *)(iVar16 + 0x30)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x30)" (( "(") (binary_expression "iVar16 + 0x30" (identifier "iVar16") (+ "+") (number_literal "0x30")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }\n    }" ({ "{") (if_statement "if (*(char *)(iVar8 + 0x41b8) != '\0') {\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }" (if "if") (parenthesized_expression "(*(char *)(iVar8 + 0x41b8) != '\0')" (( "(") (binary_expression "*(char *)(iVar8 + 0x41b8) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x41b8)" (* "*") (cast_expression "(char *)(iVar8 + 0x41b8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x41b8)" (( "(") (binary_expression "iVar8 + 0x41b8" (identifier "iVar8") (+ "+") (number_literal "0x41b8")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        local_98 = *(int *)(iVar8 + 0x521c);\n        local_9c = *(int *)(iVar8 + 0x5218);\n        if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }\n        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);\n        goto joined_r0x0008887a;\n      }" ({ "{") (expression_statement "local_98 = *(int *)(iVar8 + 0x521c);" (assignment_expression "local_98 = *(int *)(iVar8 + 0x521c)" (identifier "local_98") (= "=") (pointer_expression "*(int *)(iVar8 + 0x521c)" (* "*") (cast_expression "(int *)(iVar8 + 0x521c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x521c)" (( "(") (binary_expression "iVar8 + 0x521c" (identifier "iVar8") (+ "+") (number_literal "0x521c")) () ")"))))) (; ";")) (expression_statement "local_9c = *(int *)(iVar8 + 0x5218);" (assignment_expression "local_9c = *(int *)(iVar8 + 0x5218)" (identifier "local_9c") (= "=") (pointer_expression "*(int *)(iVar8 + 0x5218)" (* "*") (cast_expression "(int *)(iVar8 + 0x5218)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x5218)" (( "(") (binary_expression "iVar8 + 0x5218" (identifier "iVar8") (+ "+") (number_literal "0x5218")) () ")"))))) (; ";")) (if_statement "if (local_98 == 0 && local_9c == 0) {\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }" (if "if") (parenthesized_expression "(local_98 == 0 && local_9c == 0)" (( "(") (binary_expression "local_98 == 0 && local_9c == 0" (binary_expression "local_98 == 0" (identifier "local_98") (== "==") (number_literal "0")) (&& "&&") (binary_expression "local_9c == 0" (identifier "local_9c") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n          local_9c = *(int *)(iVar16 + 0x20);\n          local_98 = *(int *)(iVar16 + 0x24);\n        }" ({ "{") (expression_statement "local_9c = *(int *)(iVar16 + 0x20);" (assignment_expression "local_9c = *(int *)(iVar16 + 0x20)" (identifier "local_9c") (= "=") (pointer_expression "*(int *)(iVar16 + 0x20)" (* "*") (cast_expression "(int *)(iVar16 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x20)" (( "(") (binary_expression "iVar16 + 0x20" (identifier "iVar16") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "local_98 = *(int *)(iVar16 + 0x24);" (assignment_expression "local_98 = *(int *)(iVar16 + 0x24)" (identifier "local_98") (= "=") (pointer_expression "*(int *)(iVar16 + 0x24)" (* "*") (cast_expression "(int *)(iVar16 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x24)" (( "(") (binary_expression "iVar16 + 0x24" (identifier "iVar16") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}"))) (expression_statement "lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98);" (assignment_expression "lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98)" (identifier "lVar20") (= "=") (call_expression "FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98)" (identifier "FUN_00215240") (argument_list "(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),\n                              local_9c,local_98)" (( "(") (pointer_expression "*(undefined4 *)(iVar8 + 0x41bc)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x41bc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x41bc)" (( "(") (binary_expression "iVar8 + 0x41bc" (identifier "iVar8") (+ "+") (number_literal "0x41bc")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar8 + 0x41c0)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x41c0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x41c0)" (( "(") (binary_expression "iVar8 + 0x41c0" (identifier "iVar8") (+ "+") (number_literal "0x41c0")) () ")")))) (, ",") (identifier "local_9c") (, ",") (identifier "local_98") () ")")))) (; ";")) (goto_statement "goto joined_r0x0008887a;" (goto "goto") (statement_identifier "joined_r0x0008887a") (; ";")) (} "}"))) (} "}")) (else_clause "else if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }" (else "else") (if_statement "if (*(char *)(iVar8 + 0x423c) != '\0') {\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar8 + 0x423c) != '\0')" (( "(") (binary_expression "*(char *)(iVar8 + 0x423c) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x423c)" (* "*") (cast_expression "(char *)(iVar8 + 0x423c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x423c)" (( "(") (binary_expression "iVar8 + 0x423c" (identifier "iVar8") (+ "+") (number_literal "0x423c")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      local_98 = *(int *)(iVar8 + 0x521c);\n      local_9c = *(int *)(iVar8 + 0x5218);\n      if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }\n      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);\njoined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }\n    }" ({ "{") (expression_statement "local_98 = *(int *)(iVar8 + 0x521c);" (assignment_expression "local_98 = *(int *)(iVar8 + 0x521c)" (identifier "local_98") (= "=") (pointer_expression "*(int *)(iVar8 + 0x521c)" (* "*") (cast_expression "(int *)(iVar8 + 0x521c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x521c)" (( "(") (binary_expression "iVar8 + 0x521c" (identifier "iVar8") (+ "+") (number_literal "0x521c")) () ")"))))) (; ";")) (expression_statement "local_9c = *(int *)(iVar8 + 0x5218);" (assignment_expression "local_9c = *(int *)(iVar8 + 0x5218)" (identifier "local_9c") (= "=") (pointer_expression "*(int *)(iVar8 + 0x5218)" (* "*") (cast_expression "(int *)(iVar8 + 0x5218)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x5218)" (( "(") (binary_expression "iVar8 + 0x5218" (identifier "iVar8") (+ "+") (number_literal "0x5218")) () ")"))))) (; ";")) (if_statement "if (local_98 == 0 && local_9c == 0) {\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }" (if "if") (parenthesized_expression "(local_98 == 0 && local_9c == 0)" (( "(") (binary_expression "local_98 == 0 && local_9c == 0" (binary_expression "local_98 == 0" (identifier "local_98") (== "==") (number_literal "0")) (&& "&&") (binary_expression "local_9c == 0" (identifier "local_9c") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n        local_9c = *(int *)(iVar16 + 0x20);\n        local_98 = *(int *)(iVar16 + 0x24);\n      }" ({ "{") (expression_statement "local_9c = *(int *)(iVar16 + 0x20);" (assignment_expression "local_9c = *(int *)(iVar16 + 0x20)" (identifier "local_9c") (= "=") (pointer_expression "*(int *)(iVar16 + 0x20)" (* "*") (cast_expression "(int *)(iVar16 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x20)" (( "(") (binary_expression "iVar16 + 0x20" (identifier "iVar16") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "local_98 = *(int *)(iVar16 + 0x24);" (assignment_expression "local_98 = *(int *)(iVar16 + 0x24)" (identifier "local_98") (= "=") (pointer_expression "*(int *)(iVar16 + 0x24)" (* "*") (cast_expression "(int *)(iVar16 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x24)" (( "(") (binary_expression "iVar16 + 0x24" (identifier "iVar16") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}"))) (expression_statement "lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98);" (assignment_expression "lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98)" (identifier "lVar20") (= "=") (call_expression "FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98)" (identifier "FUN_00215240") (argument_list "(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c\n                            ,local_98)" (( "(") (pointer_expression "*(undefined4 *)(iVar8 + 0x4240)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x4240)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x4240)" (( "(") (binary_expression "iVar8 + 0x4240" (identifier "iVar8") (+ "+") (number_literal "0x4240")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar8 + 0x4244)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x4244)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x4244)" (( "(") (binary_expression "iVar8 + 0x4244" (identifier "iVar8") (+ "+") (number_literal "0x4244")) () ")")))) (, ",") (identifier "local_9c") (, ",") (identifier "local_98") () ")")))) (; ";")) (labeled_statement "joined_r0x0008887a:\n      if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }" (statement_identifier "joined_r0x0008887a") (: ":") (if_statement "if (lVar20 != 0) {\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }" (if "if") (parenthesized_expression "(lVar20 != 0)" (( "(") (binary_expression "lVar20 != 0" (identifier "lVar20") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        cVar7 = *(char *)(iVar8 + 0x318d);\n        iVar16 = 0;\n        goto LAB_00087f2e;\n      }" ({ "{") (expression_statement "cVar7 = *(char *)(iVar8 + 0x318d);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x318d)" (identifier "cVar7") (= "=") (pointer_expression "*(char *)(iVar8 + 0x318d)" (* "*") (cast_expression "(char *)(iVar8 + 0x318d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x318d)" (( "(") (binary_expression "iVar8 + 0x318d" (identifier "iVar8") (+ "+") (number_literal "0x318d")) () ")"))))) (; ";")) (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" (identifier "iVar16") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00087f2e;" (goto "goto") (statement_identifier "LAB_00087f2e") (; ";")) (} "}")))) (} "}"))))) (expression_statement "iVar16 = local_90;" (assignment_expression "iVar16 = local_90" (identifier "iVar16") (= "=") (identifier "local_90")) (; ";")) (if_statement "if ((local_90 != 0) && (iVar9 == 0)) {\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }" (if "if") (parenthesized_expression "((local_90 != 0) && (iVar9 == 0))" (( "(") (binary_expression "(local_90 != 0) && (iVar9 == 0)" (parenthesized_expression "(local_90 != 0)" (( "(") (binary_expression "local_90 != 0" (identifier "local_90") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }\n      cVar7 = *(char *)(iVar8 + 0x318d);\n      goto LAB_00087f2e;\n    }" ({ "{") (if_statement "if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0')" (( "(") (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" (* "*") (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" (( "(") (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0xac")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);\n      }" ({ "{") (expression_statement "FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f)" (( "(") (binary_expression "unaff_EDI + 0x19b1cf" (identifier "unaff_EDI") (+ "+") (number_literal "0x19b1cf")) (, ",") (number_literal "0xaef") (, ",") (binary_expression "unaff_EDI + 0x19c44f" (identifier "unaff_EDI") (+ "+") (number_literal "0x19c44f")) () ")"))) (; ";")) (} "}"))) (expression_statement "cVar7 = *(char *)(iVar8 + 0x318d);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x318d)" (identifier "cVar7") (= "=") (pointer_expression "*(char *)(iVar8 + 0x318d)" (* "*") (cast_expression "(char *)(iVar8 + 0x318d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x318d)" (( "(") (binary_expression "iVar8 + 0x318d" (identifier "iVar8") (+ "+") (number_literal "0x318d")) () ")"))))) (; ";")) (goto_statement "goto LAB_00087f2e;" (goto "goto") (statement_identifier "LAB_00087f2e") (; ";")) (} "}"))) (expression_statement "cVar7 = *(char *)(iVar8 + 0x318d);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x318d)" (identifier "cVar7") (= "=") (pointer_expression "*(char *)(iVar8 + 0x318d)" (* "*") (cast_expression "(char *)(iVar8 + 0x318d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x318d)" (( "(") (binary_expression "iVar8 + 0x318d" (identifier "iVar8") (+ "+") (number_literal "0x318d")) () ")"))))) (; ";")) (if_statement "if (iVar9 == 0) goto LAB_00087f2e;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00087f2e;" (goto "goto") (statement_identifier "LAB_00087f2e") (; ";"))) (expression_statement "local_80 = iVar9;" (assignment_expression "local_80 = iVar9" (identifier "local_80") (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))\n    {\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }" (if "if") (parenthesized_expression "(((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))" (( "(") (binary_expression "((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0')" (parenthesized_expression "((*(byte *)(iVar9 + 0x19c) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar9 + 0x19c) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x19c) & 2)" (( "(") (binary_expression "*(byte *)(iVar9 + 0x19c) & 2" (pointer_expression "*(byte *)(iVar9 + 0x19c)" (* "*") (cast_expression "(byte *)(iVar9 + 0x19c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x19c)" (( "(") (binary_expression "iVar9 + 0x19c" (identifier "iVar9") (+ "+") (number_literal "0x19c")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0')" (( "(") (binary_expression "*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 4) + 0xac)" (* "*") (cast_expression "(char *)(*(int *)(param_1 + 4) + 0xac)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 4) + 0xac)" (( "(") (binary_expression "*(int *)(param_1 + 4) + 0xac" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0xac")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      if (cVar7 != '\0') goto LAB_000887ba;\n      goto LAB_00087f39;\n    }" ({ "{") (if_statement "if (cVar7 != '\0') goto LAB_000887ba;" (if "if") (parenthesized_expression "(cVar7 != '\0')" (( "(") (binary_expression "cVar7 != '\0'" (identifier "cVar7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000887ba;" (goto "goto") (statement_identifier "LAB_000887ba") (; ";"))) (goto_statement "goto LAB_00087f39;" (goto "goto") (statement_identifier "LAB_00087f39") (; ";")) (} "}"))) (if_statement "if (cVar7 != '\0') goto LAB_000887ba;" (if "if") (parenthesized_expression "(cVar7 != '\0')" (( "(") (binary_expression "cVar7 != '\0'" (identifier "cVar7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000887ba;" (goto "goto") (statement_identifier "LAB_000887ba") (; ";"))) (if_statement "if ((*(byte *)(local_94 + 7) & 2) == 0) {\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }" (if "if") (parenthesized_expression "((*(byte *)(local_94 + 7) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(local_94 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_94 + 7) & 2)" (( "(") (binary_expression "*(byte *)(local_94 + 7) & 2" (pointer_expression "*(byte *)(local_94 + 7)" (* "*") (cast_expression "(byte *)(local_94 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_94 + 7)" (( "(") (binary_expression "local_94 + 7" (identifier "local_94") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(*local_94 + 0x38))(local_94);\n      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;\n    }" ({ "{") (expression_statement "(**(code **)(*local_94 + 0x38))(local_94);" (call_expression "(**(code **)(*local_94 + 0x38))(local_94)" (parenthesized_expression "(**(code **)(*local_94 + 0x38))" (( "(") (pointer_expression "**(code **)(*local_94 + 0x38)" (* "*") (pointer_expression "*(code **)(*local_94 + 0x38)" (* "*") (cast_expression "(code **)(*local_94 + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_94 + 0x38)" (( "(") (binary_expression "*local_94 + 0x38" (pointer_expression "*local_94" (* "*") (identifier "local_94")) (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (argument_list "(local_94)" (( "(") (identifier "local_94") () ")"))) (; ";")) (if_statement "if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;" (if "if") (parenthesized_expression "((*(byte *)(local_94 + 7) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(local_94 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_94 + 7) & 2)" (( "(") (binary_expression "*(byte *)(local_94 + 7) & 2" (pointer_expression "*(byte *)(local_94 + 7)" (* "*") (cast_expression "(byte *)(local_94 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_94 + 7)" (( "(") (binary_expression "local_94 + 7" (identifier "local_94") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00088c5f;" (goto "goto") (statement_identifier "LAB_00088c5f") (; ";"))) (} "}"))) (if_statement "if ((*(byte *)(local_8c + 7) & 2) == 0) {\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }" (if "if") (parenthesized_expression "((*(byte *)(local_8c + 7) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(local_8c + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_8c + 7) & 2)" (( "(") (binary_expression "*(byte *)(local_8c + 7) & 2" (pointer_expression "*(byte *)(local_8c + 7)" (* "*") (cast_expression "(byte *)(local_8c + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_8c + 7)" (( "(") (binary_expression "local_8c + 7" (identifier "local_8c") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(*local_8c + 0x38))(local_8c);\n      if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }\n      if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }\n    }" ({ "{") (expression_statement "(**(code **)(*local_8c + 0x38))(local_8c);" (call_expression "(**(code **)(*local_8c + 0x38))(local_8c)" (parenthesized_expression "(**(code **)(*local_8c + 0x38))" (( "(") (pointer_expression "**(code **)(*local_8c + 0x38)" (* "*") (pointer_expression "*(code **)(*local_8c + 0x38)" (* "*") (cast_expression "(code **)(*local_8c + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_8c + 0x38)" (( "(") (binary_expression "*local_8c + 0x38" (pointer_expression "*local_8c" (* "*") (identifier "local_8c")) (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (argument_list "(local_8c)" (( "(") (identifier "local_8c") () ")"))) (; ";")) (if_statement "if ((*(byte *)(local_8c + 7) & 2) == 0) {\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }" (if "if") (parenthesized_expression "((*(byte *)(local_8c + 7) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(local_8c + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_8c + 7) & 2)" (( "(") (binary_expression "*(byte *)(local_8c + 7) & 2" (pointer_expression "*(byte *)(local_8c + 7)" (* "*") (cast_expression "(byte *)(local_8c + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_8c + 7)" (( "(") (binary_expression "local_8c + 7" (identifier "local_8c") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);\n      }" ({ "{") (labeled_statement "LAB_00088c5f:\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);" (statement_identifier "LAB_00088c5f") (: ":") (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1)" (( "(") (binary_expression "unaff_EDI + 0x1998e3" (identifier "unaff_EDI") (+ "+") (number_literal "0x1998e3")) (, ",") (number_literal "0x163") (, ",") (binary_expression "unaff_EDI + 0x19c43b" (identifier "unaff_EDI") (+ "+") (number_literal "0x19c43b")) (, ",") (identifier "pbVar1") () ")"))) (; ";"))) (} "}"))) (if_statement "if ((*(byte *)(local_94 + 7) & 2) == 0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }" (if "if") (parenthesized_expression "((*(byte *)(local_94 + 7) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(local_94 + 7) & 2) == 0" (parenthesized_expression "(*(byte *)(local_94 + 7) & 2)" (( "(") (binary_expression "*(byte *)(local_94 + 7) & 2" (pointer_expression "*(byte *)(local_94 + 7)" (* "*") (cast_expression "(byte *)(local_94 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_94 + 7)" (( "(") (binary_expression "local_94 + 7" (identifier "local_94") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);\n      }" ({ "{") (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c)" (( "(") (binary_expression "unaff_EDI + 0x1998e3" (identifier "unaff_EDI") (+ "+") (number_literal "0x1998e3")) (, ",") (number_literal "0xcf") (, ",") (binary_expression "unaff_EDI + 0x19c68f" (identifier "unaff_EDI") (+ "+") (number_literal "0x19c68f")) (, ",") (identifier "local_8c") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar14 = local_94[3] + local_8c[3];" (assignment_expression "uVar14 = local_94[3] + local_8c[3]" (identifier "uVar14") (= "=") (binary_expression "local_94[3] + local_8c[3]" (subscript_expression "local_94[3]" (identifier "local_94") ([ "[") (number_literal "3") (] "]")) (+ "+") (subscript_expression "local_8c[3]" (identifier "local_8c") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar8 == 0) {\n                    \n      FUN_0007a620();\n    }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_0007a620();\n    }" ({ "{") (expression_statement "FUN_0007a620();" (call_expression "FUN_0007a620()" (identifier "FUN_0007a620") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "local_a0 = *(int *)(iVar8 + 0x521c);" (assignment_expression "local_a0 = *(int *)(iVar8 + 0x521c)" (identifier "local_a0") (= "=") (pointer_expression "*(int *)(iVar8 + 0x521c)" (* "*") (cast_expression "(int *)(iVar8 + 0x521c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x521c)" (( "(") (binary_expression "iVar8 + 0x521c" (identifier "iVar8") (+ "+") (number_literal "0x521c")) () ")"))))) (; ";")) (expression_statement "local_a4 = *(int *)(iVar8 + 0x5218);" (assignment_expression "local_a4 = *(int *)(iVar8 + 0x5218)" (identifier "local_a4") (= "=") (pointer_expression "*(int *)(iVar8 + 0x5218)" (* "*") (cast_expression "(int *)(iVar8 + 0x5218)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x5218)" (( "(") (binary_expression "iVar8 + 0x5218" (identifier "iVar8") (+ "+") (number_literal "0x5218")) () ")"))))) (; ";")) (if_statement "if (local_a0 == 0 && local_a4 == 0) {\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }" (if "if") (parenthesized_expression "(local_a0 == 0 && local_a4 == 0)" (( "(") (binary_expression "local_a0 == 0 && local_a4 == 0" (binary_expression "local_a0 == 0" (identifier "local_a0") (== "==") (number_literal "0")) (&& "&&") (binary_expression "local_a4 == 0" (identifier "local_a4") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n      local_a0 = *(int *)(param_4[1] + 0x24);\n      local_a4 = *(int *)(param_4[1] + 0x20);\n    }" ({ "{") (expression_statement "local_a0 = *(int *)(param_4[1] + 0x24);" (assignment_expression "local_a0 = *(int *)(param_4[1] + 0x24)" (identifier "local_a0") (= "=") (pointer_expression "*(int *)(param_4[1] + 0x24)" (* "*") (cast_expression "(int *)(param_4[1] + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4[1] + 0x24)" (( "(") (binary_expression "param_4[1] + 0x24" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "local_a4 = *(int *)(param_4[1] + 0x20);" (assignment_expression "local_a4 = *(int *)(param_4[1] + 0x20)" (identifier "local_a4") (= "=") (pointer_expression "*(int *)(param_4[1] + 0x20)" (* "*") (cast_expression "(int *)(param_4[1] + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4[1] + 0x20)" (( "(") (binary_expression "param_4[1] + 0x20" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(iVar9 + 0x164);" (assignment_expression "uVar3 = *(uint *)(iVar9 + 0x164)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar9 + 0x164)" (* "*") (cast_expression "(uint *)(iVar9 + 0x164)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x164)" (( "(") (binary_expression "iVar9 + 0x164" (identifier "iVar9") (+ "+") (number_literal "0x164")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(iVar9 + 0x168);" (assignment_expression "uVar4 = *(uint *)(iVar9 + 0x168)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(iVar9 + 0x168)" (* "*") (cast_expression "(uint *)(iVar9 + 0x168)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x168)" (( "(") (binary_expression "iVar9 + 0x168" (identifier "iVar9") (+ "+") (number_literal "0x168")) () ")"))))) (; ";")) (expression_statement "uVar17 = uVar3 - uVar14 & -local_a4;" (assignment_expression "uVar17 = uVar3 - uVar14 & -local_a4" (identifier "uVar17") (= "=") (binary_expression "uVar3 - uVar14 & -local_a4" (binary_expression "uVar3 - uVar14" (identifier "uVar3") (- "-") (identifier "uVar14")) (& "&") (unary_expression "-local_a4" (- "-") (identifier "local_a4")))) (; ";")) (expression_statement "uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));" (assignment_expression "uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0))" (identifier "uVar18") (= "=") (binary_expression "uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0))" (binary_expression "uVar4 - (uVar3 < uVar14)" (identifier "uVar4") (- "-") (parenthesized_expression "(uVar3 < uVar14)" (( "(") (binary_expression "uVar3 < uVar14" (identifier "uVar3") (< "<") (identifier "uVar14")) () ")"))) (& "&") (unary_expression "-(local_a0 + (uint)(local_a4 != 0))" (- "-") (parenthesized_expression "(local_a0 + (uint)(local_a4 != 0))" (( "(") (binary_expression "local_a0 + (uint)(local_a4 != 0)" (identifier "local_a0") (+ "+") (call_expression "(uint)(local_a4 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_a4 != 0)" (( "(") (binary_expression "local_a4 != 0" (identifier "local_a4") (!= "!=") (number_literal "0")) () ")")))) () ")"))))) (; ";")) (expression_statement "uVar11 = uVar3 - uVar17;" (assignment_expression "uVar11 = uVar3 - uVar17" (identifier "uVar11") (= "=") (binary_expression "uVar3 - uVar17" (identifier "uVar3") (- "-") (identifier "uVar17"))) (; ";")) (expression_statement "uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);" (assignment_expression "uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17)" (identifier "uVar15") (= "=") (binary_expression "(uVar4 - uVar18) - (uint)(uVar3 < uVar17)" (parenthesized_expression "(uVar4 - uVar18)" (( "(") (binary_expression "uVar4 - uVar18" (identifier "uVar4") (- "-") (identifier "uVar18")) () ")")) (- "-") (call_expression "(uint)(uVar3 < uVar17)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 < uVar17)" (( "(") (binary_expression "uVar3 < uVar17" (identifier "uVar3") (< "<") (identifier "uVar17")) () ")"))))) (; ";")) (expression_statement "cVar7 = *(char *)(iVar8 + 0x318d);" (assignment_expression "cVar7 = *(char *)(iVar8 + 0x318d)" (identifier "cVar7") (= "=") (pointer_expression "*(char *)(iVar8 + 0x318d)" (* "*") (cast_expression "(char *)(iVar8 + 0x318d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x318d)" (( "(") (binary_expression "iVar8 + 0x318d" (identifier "iVar8") (+ "+") (number_literal "0x318d")) () ")"))))) (; ";")) (if_statement "if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }" (if "if") (parenthesized_expression "(uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15)" (( "(") (binary_expression "uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15" (binary_expression "uVar15 <= uVar4" (identifier "uVar15") (<= "<=") (identifier "uVar4")) (&& "&&") (binary_expression "(uint)(uVar3 < uVar11) <= uVar4 - uVar15" (call_expression "(uint)(uVar3 < uVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 < uVar11)" (( "(") (binary_expression "uVar3 < uVar11" (identifier "uVar3") (< "<") (identifier "uVar11")) () ")"))) (<= "<=") (binary_expression "uVar4 - uVar15" (identifier "uVar4") (- "-") (identifier "uVar15")))) () ")")) (compound_statement "{\n      uVar5 = *(uint *)(iVar9 + 0x160);\n      uVar6 = *(uint *)(iVar9 + 0x15c);\n      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }\n    }" ({ "{") (expression_statement "uVar5 = *(uint *)(iVar9 + 0x160);" (assignment_expression "uVar5 = *(uint *)(iVar9 + 0x160)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(iVar9 + 0x160)" (* "*") (cast_expression "(uint *)(iVar9 + 0x160)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x160)" (( "(") (binary_expression "iVar9 + 0x160" (identifier "iVar9") (+ "+") (number_literal "0x160")) () ")"))))) (; ";")) (expression_statement "uVar6 = *(uint *)(iVar9 + 0x15c);" (assignment_expression "uVar6 = *(uint *)(iVar9 + 0x15c)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(iVar9 + 0x15c)" (* "*") (cast_expression "(uint *)(iVar9 + 0x15c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x15c)" (( "(") (binary_expression "iVar9 + 0x15c" (identifier "iVar9") (+ "+") (number_literal "0x15c")) () ")"))))) (; ";")) (if_statement "if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }" (if "if") (parenthesized_expression "(uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15)" (( "(") (binary_expression "uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15" (binary_expression "uVar15 <= uVar5" (identifier "uVar15") (<= "<=") (identifier "uVar5")) (&& "&&") (binary_expression "(uint)(uVar6 < uVar11) <= uVar5 - uVar15" (call_expression "(uint)(uVar6 < uVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar6 < uVar11)" (( "(") (binary_expression "uVar6 < uVar11" (identifier "uVar6") (< "<") (identifier "uVar11")) () ")"))) (<= "<=") (binary_expression "uVar5 - uVar15" (identifier "uVar5") (- "-") (identifier "uVar15")))) () ")")) (compound_statement "{\n        *(uint *)(iVar9 + 0x164) = uVar17;\n        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;\n        *(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;\n        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;\n        *(uint *)(iVar9 + 0x168) = uVar18;\n        iVar8 = uVar15 - (uVar11 < uVar14);\n        if (cVar7 != '\0') goto LAB_000887ba;\n        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;\n        if (iVar9 == 0) goto LAB_0008878f;\n        piVar12 = (int *)FUN_0017ebf0(0x2c);\n        piVar12[1] = 0;\n        piVar12[3] = uVar11 - uVar14;\n        piVar12[2] = 0;\n        piVar12[8] = 0;\n        piVar12[9] = 1;\n        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;\n        piVar12[10] = 0;\n        piVar12[4] = iVar8;\n        piVar12[5] = -1;\n        piVar12[6] = -1;\n        *piVar12 = unaff_EDI + 0x2759db;\n        FUN_000bee40(iVar9,piVar12);\n        goto LAB_0008878f;\n      }" ({ "{") (expression_statement "*(uint *)(iVar9 + 0x164) = uVar17;" (assignment_expression "*(uint *)(iVar9 + 0x164) = uVar17" (pointer_expression "*(uint *)(iVar9 + 0x164)" (* "*") (cast_expression "(uint *)(iVar9 + 0x164)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x164)" (( "(") (binary_expression "iVar9 + 0x164" (identifier "iVar9") (+ "+") (number_literal "0x164")) () ")")))) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "*(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;" (assignment_expression "*(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17" (pointer_expression "*(uint *)(iVar9 + 0x15c)" (* "*") (cast_expression "(uint *)(iVar9 + 0x15c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x15c)" (( "(") (binary_expression "iVar9 + 0x15c" (identifier "iVar9") (+ "+") (number_literal "0x15c")) () ")")))) (= "=") (binary_expression "(uVar6 - uVar3) + uVar17" (parenthesized_expression "(uVar6 - uVar3)" (( "(") (binary_expression "uVar6 - uVar3" (identifier "uVar6") (- "-") (identifier "uVar3")) () ")")) (+ "+") (identifier "uVar17"))) (; ";")) (expression_statement "*(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)\n        ;" (assignment_expression "*(uint *)(iVar9 + 0x160) =\n             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)" (pointer_expression "*(uint *)(iVar9 + 0x160)" (* "*") (cast_expression "(uint *)(iVar9 + 0x160)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x160)" (( "(") (binary_expression "iVar9 + 0x160" (identifier "iVar9") (+ "+") (number_literal "0x160")) () ")")))) (= "=") (binary_expression "((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)" (binary_expression "((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18" (parenthesized_expression "((uVar5 - uVar4) - (uint)(uVar6 < uVar3))" (( "(") (binary_expression "(uVar5 - uVar4) - (uint)(uVar6 < uVar3)" (parenthesized_expression "(uVar5 - uVar4)" (( "(") (binary_expression "uVar5 - uVar4" (identifier "uVar5") (- "-") (identifier "uVar4")) () ")")) (- "-") (call_expression "(uint)(uVar6 < uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar6 < uVar3)" (( "(") (binary_expression "uVar6 < uVar3" (identifier "uVar6") (< "<") (identifier "uVar3")) () ")")))) () ")")) (+ "+") (identifier "uVar18")) (+ "+") (cast_expression "(uint)CARRY4(uVar6 - uVar3,uVar17)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar6 - uVar3,uVar17)" (identifier "CARRY4") (argument_list "(uVar6 - uVar3,uVar17)" (( "(") (binary_expression "uVar6 - uVar3" (identifier "uVar6") (- "-") (identifier "uVar3")) (, ",") (identifier "uVar17") () ")")))))) (; ";")) (expression_statement "*(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;" (assignment_expression "*(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar9 + 0x19c)" (* "*") (cast_expression "(byte *)(iVar9 + 0x19c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x19c)" (( "(") (binary_expression "iVar9 + 0x19c" (identifier "iVar9") (+ "+") (number_literal "0x19c")) () ")")))) (= "=") (binary_expression "*(byte *)(iVar9 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar9 + 0x19c)" (* "*") (cast_expression "(byte *)(iVar9 + 0x19c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x19c)" (( "(") (binary_expression "iVar9 + 0x19c" (identifier "iVar9") (+ "+") (number_literal "0x19c")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (expression_statement "*(uint *)(iVar9 + 0x168) = uVar18;" (assignment_expression "*(uint *)(iVar9 + 0x168) = uVar18" (pointer_expression "*(uint *)(iVar9 + 0x168)" (* "*") (cast_expression "(uint *)(iVar9 + 0x168)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x168)" (( "(") (binary_expression "iVar9 + 0x168" (identifier "iVar9") (+ "+") (number_literal "0x168")) () ")")))) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "iVar8 = uVar15 - (uVar11 < uVar14);" (assignment_expression "iVar8 = uVar15 - (uVar11 < uVar14)" (identifier "iVar8") (= "=") (binary_expression "uVar15 - (uVar11 < uVar14)" (identifier "uVar15") (- "-") (parenthesized_expression "(uVar11 < uVar14)" (( "(") (binary_expression "uVar11 < uVar14" (identifier "uVar11") (< "<") (identifier "uVar14")) () ")")))) (; ";")) (if_statement "if (cVar7 != '\0') goto LAB_000887ba;" (if "if") (parenthesized_expression "(cVar7 != '\0')" (( "(") (binary_expression "cVar7 != '\0'" (identifier "cVar7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000887ba;" (goto "goto") (statement_identifier "LAB_000887ba") (; ";"))) (if_statement "if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;" (if "if") (parenthesized_expression "(uVar11 - uVar14 == 0 && iVar8 == 0)" (( "(") (binary_expression "uVar11 - uVar14 == 0 && iVar8 == 0" (binary_expression "uVar11 - uVar14 == 0" (binary_expression "uVar11 - uVar14" (identifier "uVar11") (- "-") (identifier "uVar14")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0"))) () ")")) (goto_statement "goto LAB_0008878f;" (goto "goto") (statement_identifier "LAB_0008878f") (; ";"))) (if_statement "if (iVar9 == 0) goto LAB_0008878f;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008878f;" (goto "goto") (statement_identifier "LAB_0008878f") (; ";"))) (expression_statement "piVar12 = (int *)FUN_0017ebf0(0x2c);" (assignment_expression "piVar12 = (int *)FUN_0017ebf0(0x2c)" (identifier "piVar12") (= "=") (cast_expression "(int *)FUN_0017ebf0(0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017ebf0(0x2c)" (identifier "FUN_0017ebf0") (argument_list "(0x2c)" (( "(") (number_literal "0x2c") () ")"))))) (; ";")) (expression_statement "piVar12[1] = 0;" (assignment_expression "piVar12[1] = 0" (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar12[3] = uVar11 - uVar14;" (assignment_expression "piVar12[3] = uVar11 - uVar14" (subscript_expression "piVar12[3]" (identifier "piVar12") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "uVar11 - uVar14" (identifier "uVar11") (- "-") (identifier "uVar14"))) (; ";")) (expression_statement "piVar12[2] = 0;" (assignment_expression "piVar12[2] = 0" (subscript_expression "piVar12[2]" (identifier "piVar12") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar12[8] = 0;" (assignment_expression "piVar12[8] = 0" (subscript_expression "piVar12[8]" (identifier "piVar12") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar12[9] = 1;" (assignment_expression "piVar12[9] = 1" (subscript_expression "piVar12[9]" (identifier "piVar12") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;" (assignment_expression "*(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10" (pointer_expression "*(byte *)(piVar12 + 7)" (* "*") (cast_expression "(byte *)(piVar12 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar12 + 7)" (( "(") (binary_expression "piVar12 + 7" (identifier "piVar12") (+ "+") (number_literal "7")) () ")")))) (= "=") (binary_expression "*(byte *)(piVar12 + 7) & 0xe0 | 10" (binary_expression "*(byte *)(piVar12 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar12 + 7)" (* "*") (cast_expression "(byte *)(piVar12 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar12 + 7)" (( "(") (binary_expression "piVar12 + 7" (identifier "piVar12") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "0xe0")) (| "|") (number_literal "10"))) (; ";")) (expression_statement "piVar12[10] = 0;" (assignment_expression "piVar12[10] = 0" (subscript_expression "piVar12[10]" (identifier "piVar12") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar12[4] = iVar8;" (assignment_expression "piVar12[4] = iVar8" (subscript_expression "piVar12[4]" (identifier "piVar12") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "piVar12[5] = -1;" (assignment_expression "piVar12[5] = -1" (subscript_expression "piVar12[5]" (identifier "piVar12") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "piVar12[6] = -1;" (assignment_expression "piVar12[6] = -1" (subscript_expression "piVar12[6]" (identifier "piVar12") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "*piVar12 = unaff_EDI + 0x2759db;" (assignment_expression "*piVar12 = unaff_EDI + 0x2759db" (pointer_expression "*piVar12" (* "*") (identifier "piVar12")) (= "=") (binary_expression "unaff_EDI + 0x2759db" (identifier "unaff_EDI") (+ "+") (number_literal "0x2759db"))) (; ";")) (expression_statement "FUN_000bee40(iVar9,piVar12);" (call_expression "FUN_000bee40(iVar9,piVar12)" (identifier "FUN_000bee40") (argument_list "(iVar9,piVar12)" (( "(") (identifier "iVar9") (, ",") (identifier "piVar12") () ")"))) (; ";")) (goto_statement "goto LAB_0008878f;" (goto "goto") (statement_identifier "LAB_0008878f") (; ";")) (} "}"))) (} "}"))) (if_statement "if (cVar7 != '\0') goto LAB_00087f7a;" (if "if") (parenthesized_expression "(cVar7 != '\0')" (( "(") (binary_expression "cVar7 != '\0'" (identifier "cVar7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00087f7a;" (goto "goto") (statement_identifier "LAB_00087f7a") (; ";"))) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" (identifier "local_80") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" (identifier "uVar19") (= "=") (identifier "local_5c")) (; ";")) (labeled_statement "LAB_00087f52:\n    local_5c = uVar19;" (statement_identifier "LAB_00087f52") (: ":") (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" (identifier "local_5c") (= "=") (identifier "uVar19")) (; ";"))) (if_statement "if (iVar16 != 0) goto LAB_00087f5a;" (if "if") (parenthesized_expression "(iVar16 != 0)" (( "(") (binary_expression "iVar16 != 0" (identifier "iVar16") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00087f5a;" (goto "goto") (statement_identifier "LAB_00087f5a") (; ";"))) (expression_statement "iVar9 = *(int *)(param_1 + 4);" (assignment_expression "iVar9 = *(int *)(param_1 + 4)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;" (if "if") (parenthesized_expression "(*(char *)(iVar9 + 0xac) != '\0')" (( "(") (binary_expression "*(char *)(iVar9 + 0xac) != '\0'" (pointer_expression "*(char *)(iVar9 + 0xac)" (* "*") (cast_expression "(char *)(iVar9 + 0xac)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xac)" (( "(") (binary_expression "iVar9 + 0xac" (identifier "iVar9") (+ "+") (number_literal "0xac")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00087f99;" (goto "goto") (statement_identifier "LAB_00087f99") (; ";"))) (labeled_statement "LAB_00087fc3:\n    iVar9 = local_88;" (statement_identifier "LAB_00087fc3") (: ":") (expression_statement "iVar9 = local_88;" (assignment_expression "iVar9 = local_88" (identifier "iVar9") (= "=") (identifier "local_88")) (; ";"))) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" (identifier "local_68") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" (identifier "local_5c") (= "=") (identifier "uVar19")) (; ";")) (if_statement "if (*(char *)(iVar8 + 0x318d) == '\0') {\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }\n    else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar8 + 0x318d) == '\0')" (( "(") (binary_expression "*(char *)(iVar8 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x318d)" (* "*") (cast_expression "(char *)(iVar8 + 0x318d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x318d)" (( "(") (binary_expression "iVar8 + 0x318d" (identifier "iVar8") (+ "+") (number_literal "0x318d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 == 0) goto LAB_000888c2;\nLAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }\n      local_5c = uVar19;\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;\n      if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;\n    }" ({ "{") (expression_statement "uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);" (assignment_expression "uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68)" (identifier "uVar19") (= "=") (call_expression "FUN_00086af0(param_1,param_4,local_80,&local_68)" (identifier "FUN_00086af0") (argument_list "(param_1,param_4,local_80,&local_68)" (( "(") (identifier "param_1") (, ",") (identifier "param_4") (, ",") (identifier "local_80") (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) () ")")))) (; ";")) (expression_statement "iVar8 = *(int *)pbVar1;" (assignment_expression "iVar8 = *(int *)pbVar1" (identifier "iVar8") (= "=") (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1")))) (; ";")) (expression_statement "iVar16 = *(int *)(iVar8 + 8);" (assignment_expression "iVar16 = *(int *)(iVar8 + 8)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(iVar8 + 8)" (* "*") (cast_expression "(int *)(iVar8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 8)" (( "(") (binary_expression "iVar8 + 8" (identifier "iVar8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar16 == 0) goto LAB_000888c2;" (if "if") (parenthesized_expression "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000888c2;" (goto "goto") (statement_identifier "LAB_000888c2") (; ";"))) (labeled_statement "LAB_00087ff2:\n      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }" (statement_identifier "LAB_00087ff2") (: ":") (if_statement "if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }" (if "if") (parenthesized_expression "((*(byte *)(iVar8 + 0x14) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(iVar8 + 0x14) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x14) & 8)" (( "(") (binary_expression "*(byte *)(iVar8 + 0x14) & 8" (pointer_expression "*(byte *)(iVar8 + 0x14)" (* "*") (cast_expression "(byte *)(iVar8 + 0x14)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        iVar8 = *(int *)pbVar1;\n        iVar16 = *(int *)(iVar8 + 8);\n        if (iVar16 == 0) goto LAB_000888c2;\n      }" ({ "{") (if_statement "if (local_88 == 0) {\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }\n        else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }" (if "if") (parenthesized_expression "(local_88 == 0)" (( "(") (binary_expression "local_88 == 0" (identifier "local_88") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }" ({ "{") (expression_statement "FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);" (call_expression "FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130)" (identifier "FUN_0007f530") (argument_list "(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x1e8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1e8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1e8)" (( "(") (binary_expression "param_1 + 0x1e8" (identifier "param_1") (+ "+") (number_literal "0x1e8")) () ")")))) (, ",") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }" (else "else") (compound_statement "{\n          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);\n        }" ({ "{") (expression_statement "FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);" (call_expression "FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130)" (identifier "FUN_0007b330") (argument_list "(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x1e8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1e8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1e8)" (( "(") (binary_expression "param_1 + 0x1e8" (identifier "param_1") (+ "+") (number_literal "0x1e8")) () ")")))) (, ",") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")"))) (; ";")) (} "}")))) (expression_statement "iVar8 = *(int *)pbVar1;" (assignment_expression "iVar8 = *(int *)pbVar1" (identifier "iVar8") (= "=") (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1")))) (; ";")) (expression_statement "iVar16 = *(int *)(iVar8 + 8);" (assignment_expression "iVar16 = *(int *)(iVar8 + 8)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(iVar8 + 8)" (* "*") (cast_expression "(int *)(iVar8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 8)" (( "(") (binary_expression "iVar8 + 8" (identifier "iVar8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar16 == 0) goto LAB_000888c2;" (if "if") (parenthesized_expression "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000888c2;" (goto "goto") (statement_identifier "LAB_000888c2") (; ";"))) (} "}")))) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" (identifier "local_5c") (= "=") (identifier "uVar19")) (; ";")) (if_statement "if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;" (if "if") (parenthesized_expression "((*(byte *)(iVar8 + 0x14) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(iVar8 + 0x14) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x14) & 8)" (( "(") (binary_expression "*(byte *)(iVar8 + 0x14) & 8" (pointer_expression "*(byte *)(iVar8 + 0x14)" (* "*") (cast_expression "(byte *)(iVar8 + 0x14)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00088970;" (goto "goto") (statement_identifier "LAB_00088970") (; ";"))) (expression_statement "pcVar13 = *(code **)(*param_4 + 0x68);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x68)" (identifier "pcVar13") (= "=") (pointer_expression "*(code **)(*param_4 + 0x68)" (* "*") (cast_expression "(code **)(*param_4 + 0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_4 + 0x68)" (( "(") (binary_expression "*param_4 + 0x68" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (if_statement "if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;" (if "if") (parenthesized_expression "(pcVar13 != (code *)(unaff_EDI + 0x1497))" (( "(") (binary_expression "pcVar13 != (code *)(unaff_EDI + 0x1497)" (identifier "pcVar13") (!= "!=") (cast_expression "(code *)(unaff_EDI + 0x1497)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1497)" (( "(") (binary_expression "unaff_EDI + 0x1497" (identifier "unaff_EDI") (+ "+") (number_literal "0x1497")) () ")")))) () ")")) (goto_statement "goto LAB_000888db;" (goto "goto") (statement_identifier "LAB_000888db") (; ";"))) (if_statement "if ((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))\n      goto LAB_00088910;" (if "if") (parenthesized_expression "((*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))" (( "(") (binary_expression "(*(char *)(iVar16 + 0x3209) != '\0') &&\n         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147))" (parenthesized_expression "(*(char *)(iVar16 + 0x3209) != '\0')" (( "(") (binary_expression "*(char *)(iVar16 + 0x3209) != '\0'" (pointer_expression "*(char *)(iVar16 + 0x3209)" (* "*") (cast_expression "(char *)(iVar16 + 0x3209)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x3209)" (( "(") (binary_expression "iVar16 + 0x3209" (identifier "iVar16") (+ "+") (number_literal "0x3209")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147))" (( "(") (comma_expression "pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x6c)" (identifier "pcVar13") (= "=") (pointer_expression "*(code **)(*param_4 + 0x6c)" (* "*") (cast_expression "(code **)(*param_4 + 0x6c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_4 + 0x6c)" (( "(") (binary_expression "*param_4 + 0x6c" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x6c")) () ")"))))) (, ",") (binary_expression "pcVar13 != (code *)(unaff_EDI + 0x1147)" (identifier "pcVar13") (!= "!=") (cast_expression "(code *)(unaff_EDI + 0x1147)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1147)" (( "(") (binary_expression "unaff_EDI + 0x1147" (identifier "unaff_EDI") (+ "+") (number_literal "0x1147")) () ")"))))) () ")"))) () ")")) (goto_statement "goto LAB_00088910;" (goto "goto") (statement_identifier "LAB_00088910") (; ";"))) (} "}")) (else_clause "else {\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }" (else "else") (compound_statement "{\n      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);\n      iVar8 = *(int *)pbVar1;\n      iVar16 = *(int *)(iVar8 + 8);\n      if (iVar16 != 0) goto LAB_00087ff2;\nLAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);\n      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;\nLAB_000888db:\n      local_5c = uVar19;\n      cVar7 = (*pcVar13)(param_4);\n      if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }\n    }" ({ "{") (expression_statement "uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);" (assignment_expression "uVar19 = FUN_0007c8c0(param_1,local_94,&local_68)" (identifier "uVar19") (= "=") (call_expression "FUN_0007c8c0(param_1,local_94,&local_68)" (identifier "FUN_0007c8c0") (argument_list "(param_1,local_94,&local_68)" (( "(") (identifier "param_1") (, ",") (identifier "local_94") (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) () ")")))) (; ";")) (expression_statement "iVar8 = *(int *)pbVar1;" (assignment_expression "iVar8 = *(int *)pbVar1" (identifier "iVar8") (= "=") (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1")))) (; ";")) (expression_statement "iVar16 = *(int *)(iVar8 + 8);" (assignment_expression "iVar16 = *(int *)(iVar8 + 8)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(iVar8 + 8)" (* "*") (cast_expression "(int *)(iVar8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 8)" (( "(") (binary_expression "iVar8 + 8" (identifier "iVar8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar16 != 0) goto LAB_00087ff2;" (if "if") (parenthesized_expression "(iVar16 != 0)" (( "(") (binary_expression "iVar16 != 0" (identifier "iVar16") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00087ff2;" (goto "goto") (statement_identifier "LAB_00087ff2") (; ";"))) (labeled_statement "LAB_000888c2:\n      pcVar13 = *(code **)(*param_4 + 0x68);" (statement_identifier "LAB_000888c2") (: ":") (expression_statement "pcVar13 = *(code **)(*param_4 + 0x68);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x68)" (identifier "pcVar13") (= "=") (pointer_expression "*(code **)(*param_4 + 0x68)" (* "*") (cast_expression "(code **)(*param_4 + 0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_4 + 0x68)" (( "(") (binary_expression "*param_4 + 0x68" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x68")) () ")"))))) (; ";"))) (if_statement "if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;" (if "if") (parenthesized_expression "(pcVar13 == (code *)(unaff_EDI + 0x1497))" (( "(") (binary_expression "pcVar13 == (code *)(unaff_EDI + 0x1497)" (identifier "pcVar13") (== "==") (cast_expression "(code *)(unaff_EDI + 0x1497)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1497)" (( "(") (binary_expression "unaff_EDI + 0x1497" (identifier "unaff_EDI") (+ "+") (number_literal "0x1497")) () ")")))) () ")")) (goto_statement "goto LAB_00088477;" (goto "goto") (statement_identifier "LAB_00088477") (; ";"))) (labeled_statement "LAB_000888db:\n      local_5c = uVar19;" (statement_identifier "LAB_000888db") (: ":") (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" (identifier "local_5c") (= "=") (identifier "uVar19")) (; ";"))) (expression_statement "cVar7 = (*pcVar13)(param_4);" (assignment_expression "cVar7 = (*pcVar13)(param_4)" (identifier "cVar7") (= "=") (call_expression "(*pcVar13)(param_4)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (cVar7 != '\0') {\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }" (if "if") (parenthesized_expression "(cVar7 != '\0')" (( "(") (binary_expression "cVar7 != '\0'" (identifier "cVar7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }\n        local_88 = iVar9 + 1;\n        if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }\n      }" ({ "{") (if_statement "if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }\n        else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }" (if "if") (parenthesized_expression "((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0))" (( "(") (binary_expression "(*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)" (parenthesized_expression "(*(int *)(*(int *)pbVar1 + 8) == 0)" (( "(") (binary_expression "*(int *)(*(int *)pbVar1 + 8) == 0" (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)" (( "(") (binary_expression "(*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0" (parenthesized_expression "(*(byte *)(*(int *)pbVar1 + 0x14) & 8)" (( "(") (binary_expression "*(byte *)(*(int *)pbVar1 + 0x14) & 8" (pointer_expression "*(byte *)(*(int *)pbVar1 + 0x14)" (* "*") (cast_expression "(byte *)(*(int *)pbVar1 + 0x14)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 0x14)" (( "(") (binary_expression "*(int *)pbVar1 + 0x14" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          pcVar13 = *(code **)(*param_4 + 0x6c);\n          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;\nLAB_00088910:\n          local_88 = local_88 + 1;\n          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);\n        }" ({ "{") (expression_statement "pcVar13 = *(code **)(*param_4 + 0x6c);" (assignment_expression "pcVar13 = *(code **)(*param_4 + 0x6c)" (identifier "pcVar13") (= "=") (pointer_expression "*(code **)(*param_4 + 0x6c)" (* "*") (cast_expression "(code **)(*param_4 + 0x6c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_4 + 0x6c)" (( "(") (binary_expression "*param_4 + 0x6c" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (if_statement "if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;" (if "if") (parenthesized_expression "(pcVar13 == (code *)(unaff_EDI + 0x1147))" (( "(") (binary_expression "pcVar13 == (code *)(unaff_EDI + 0x1147)" (identifier "pcVar13") (== "==") (cast_expression "(code *)(unaff_EDI + 0x1147)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1147)" (( "(") (binary_expression "unaff_EDI + 0x1147" (identifier "unaff_EDI") (+ "+") (number_literal "0x1147")) () ")")))) () ")")) (goto_statement "goto LAB_00088098;" (goto "goto") (statement_identifier "LAB_00088098") (; ";"))) (labeled_statement "LAB_00088910:\n          local_88 = local_88 + 1;" (statement_identifier "LAB_00088910") (: ":") (expression_statement "local_88 = local_88 + 1;" (assignment_expression "local_88 = local_88 + 1" (identifier "local_88") (= "=") (binary_expression "local_88 + 1" (identifier "local_88") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);" (assignment_expression "cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5)" (identifier "cVar7") (= "=") (call_expression "(*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_4,local_88,param_2,param_3,param_1,param_5)" (( "(") (identifier "param_4") (, ",") (identifier "local_88") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_1") (, ",") (identifier "param_5") () ")")))) (; ";")) (} "}")) (else_clause "else {\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }" (else "else") (compound_statement "{\nLAB_00088970:\n          local_88 = local_88 + 1;\n          cVar7 = local_88 < 2;\n        }" ({ "{") (labeled_statement "LAB_00088970:\n          local_88 = local_88 + 1;" (statement_identifier "LAB_00088970") (: ":") (expression_statement "local_88 = local_88 + 1;" (assignment_expression "local_88 = local_88 + 1" (identifier "local_88") (= "=") (binary_expression "local_88 + 1" (identifier "local_88") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "cVar7 = local_88 < 2;" (assignment_expression "cVar7 = local_88 < 2" (identifier "cVar7") (= "=") (binary_expression "local_88 < 2" (identifier "local_88") (< "<") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "local_88 = iVar9 + 1;" (assignment_expression "local_88 = iVar9 + 1" (identifier "local_88") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (cVar7 != '\0') {\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }" (if "if") (parenthesized_expression "(cVar7 != '\0')" (( "(") (binary_expression "cVar7 != '\0'" (identifier "cVar7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          FUN_0007c310(param_1);\n          goto LAB_00087e80;\n        }" ({ "{") (expression_statement "FUN_0007c310(param_1);" (call_expression "FUN_0007c310(param_1)" (identifier "FUN_0007c310") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (goto_statement "goto LAB_00087e80;" (goto "goto") (statement_identifier "LAB_00087e80") (; ";")) (} "}"))) (} "}"))) (} "}")))) (labeled_statement "LAB_00088098:\n    local_88 = iVar9 + 1;" (statement_identifier "LAB_00088098") (: ":") (expression_statement "local_88 = iVar9 + 1;" (assignment_expression "local_88 = iVar9 + 1" (identifier "local_88") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);" (assignment_expression "iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0)" (identifier "iVar9") (= "=") (call_expression "FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0)" (identifier "FUN_00124fc0") (argument_list "(param_3,&UNK_0019b53f + unaff_EDI,0)" (( "(") (identifier "param_3") (, ",") (binary_expression "&UNK_0019b53f + unaff_EDI" (pointer_expression "&UNK_0019b53f" (& "&") (identifier "UNK_0019b53f")) (+ "+") (identifier "unaff_EDI")) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }" (if "if") (parenthesized_expression "((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0))" (( "(") (binary_expression "(iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)" (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(iVar9 + 0x2c) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(iVar9 + 0x2c) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x2c) & 4)" (( "(") (binary_expression "*(byte *)(iVar9 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar9 + 0x2c)" (* "*") (cast_expression "(byte *)(iVar9 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x2c)" (( "(") (binary_expression "iVar9 + 0x2c" (identifier "iVar9") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }\n    }" ({ "{") (if_statement "if (local_80 == 0) {\n        FUN_00122fd0(iVar9);\n      }\n      else {\n        FUN_00122f70(iVar9,local_80,0);\n      }" (if "if") (parenthesized_expression "(local_80 == 0)" (( "(") (binary_expression "local_80 == 0" (identifier "local_80") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_00122fd0(iVar9);\n      }" ({ "{") (expression_statement "FUN_00122fd0(iVar9);" (call_expression "FUN_00122fd0(iVar9)" (identifier "FUN_00122fd0") (argument_list "(iVar9)" (( "(") (identifier "iVar9") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        FUN_00122f70(iVar9,local_80,0);\n      }" (else "else") (compound_statement "{\n        FUN_00122f70(iVar9,local_80,0);\n      }" ({ "{") (expression_statement "FUN_00122f70(iVar9,local_80,0);" (call_expression "FUN_00122f70(iVar9,local_80,0)" (identifier "FUN_00122f70") (argument_list "(iVar9,local_80,0)" (( "(") (identifier "iVar9") (, ",") (identifier "local_80") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "uVar19 = FUN_0007cbc0(param_1,local_5c,0);" (assignment_expression "uVar19 = FUN_0007cbc0(param_1,local_5c,0)" (identifier "uVar19") (= "=") (call_expression "FUN_0007cbc0(param_1,local_5c,0)" (identifier "FUN_0007cbc0") (argument_list "(param_1,local_5c,0)" (( "(") (identifier "param_1") (, ",") (identifier "local_5c") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "piVar12 = *(int **)(param_1 + 0x13c);" (assignment_expression "piVar12 = *(int **)(param_1 + 0x13c)" (identifier "piVar12") (= "=") (pointer_expression "*(int **)(param_1 + 0x13c)" (* "*") (cast_expression "(int **)(param_1 + 0x13c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x13c)" (( "(") (binary_expression "param_1 + 0x13c" (identifier "param_1") (+ "+") (number_literal "0x13c")) () ")"))))) (; ";")) (expression_statement "iVar9 = local_68;" (assignment_expression "iVar9 = local_68" (identifier "iVar9") (= "=") (identifier "local_68")) (; ";")) (if_statement "if (*(int **)(param_1 + 0x140) != piVar12) {\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }" (if "if") (parenthesized_expression "(*(int **)(param_1 + 0x140) != piVar12)" (( "(") (binary_expression "*(int **)(param_1 + 0x140) != piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" (* "*") (cast_expression "(int **)(param_1 + 0x140)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (!= "!=") (identifier "piVar12")) () ")")) (compound_statement "{\n      do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);\n    }" ({ "{") (do_statement "do {\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      } while (*(int **)(param_1 + 0x140) != piVar12);" (do "do") (compound_statement "{\n        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }\n        piVar12 = piVar12 + 1;\n      }" ({ "{") (while_statement "while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }" (while "while") (parenthesized_expression "(piVar2 = (int *)*piVar12, piVar2[0x18] == -1)" (( "(") (comma_expression "piVar2 = (int *)*piVar12, piVar2[0x18] == -1" (assignment_expression "piVar2 = (int *)*piVar12" (identifier "piVar2") (= "=") (cast_expression "(int *)*piVar12" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar12" (* "*") (identifier "piVar12")))) (, ",") (binary_expression "piVar2[0x18] == -1" (subscript_expression "piVar2[0x18]" (identifier "piVar2") ([ "[") (number_literal "0x18") (] "]")) (== "==") (number_literal "-1"))) () ")")) (compound_statement "{\n          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }\n          iVar9 = iVar9 + 1;\n          piVar12 = piVar12 + 1;\n          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;\n        }" ({ "{") (if_statement "if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n            piVar2[0x18] = iVar9;\n          }\n          else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }" (if "if") (parenthesized_expression "(*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447))" (( "(") (binary_expression "*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)" (pointer_expression "*(code **)(*piVar2 + 0x30)" (* "*") (cast_expression "(code **)(*piVar2 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 0x30)" (( "(") (binary_expression "*piVar2 + 0x30" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x30")) () ")")))) (== "==") (cast_expression "(code *)(unaff_EDI + 0x1447)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1447)" (( "(") (binary_expression "unaff_EDI + 0x1447" (identifier "unaff_EDI") (+ "+") (number_literal "0x1447")) () ")")))) () ")")) (compound_statement "{\n            piVar2[0x18] = iVar9;\n          }" ({ "{") (expression_statement "piVar2[0x18] = iVar9;" (assignment_expression "piVar2[0x18] = iVar9" (subscript_expression "piVar2[0x18]" (identifier "piVar2") ([ "[") (number_literal "0x18") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (} "}")) (else_clause "else {\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }" (else "else") (compound_statement "{\n            local_5c = uVar19;\n            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n            uVar19 = local_5c;\n          }" ({ "{") (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" (identifier "local_5c") (= "=") (identifier "uVar19")) (; ";")) (expression_statement "(**(code **)(*piVar2 + 0x30))(piVar2,iVar9);" (call_expression "(**(code **)(*piVar2 + 0x30))(piVar2,iVar9)" (parenthesized_expression "(**(code **)(*piVar2 + 0x30))" (( "(") (pointer_expression "**(code **)(*piVar2 + 0x30)" (* "*") (pointer_expression "*(code **)(*piVar2 + 0x30)" (* "*") (cast_expression "(code **)(*piVar2 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 0x30)" (( "(") (binary_expression "*piVar2 + 0x30" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "(piVar2,iVar9)" (( "(") (identifier "piVar2") (, ",") (identifier "iVar9") () ")"))) (; ";")) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" (identifier "uVar19") (= "=") (identifier "local_5c")) (; ";")) (} "}")))) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" (identifier "piVar12") (= "=") (binary_expression "piVar12 + 1" (identifier "piVar12") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;" (if "if") (parenthesized_expression "(*(int **)(param_1 + 0x140) == piVar12)" (( "(") (binary_expression "*(int **)(param_1 + 0x140) == piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" (* "*") (cast_expression "(int **)(param_1 + 0x140)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (== "==") (identifier "piVar12")) () ")")) (goto_statement "goto LAB_00088157;" (goto "goto") (statement_identifier "LAB_00088157") (; ";"))) (} "}"))) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" (identifier "piVar12") (= "=") (binary_expression "piVar12 + 1" (identifier "piVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(int **)(param_1 + 0x140) != piVar12)" (( "(") (binary_expression "*(int **)(param_1 + 0x140) != piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" (* "*") (cast_expression "(int **)(param_1 + 0x140)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (!= "!=") (identifier "piVar12")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00088157:\n    local_68 = iVar9;" (statement_identifier "LAB_00088157") (: ":") (expression_statement "local_68 = iVar9;" (assignment_expression "local_68 = iVar9" (identifier "local_68") (= "=") (identifier "iVar9")) (; ";"))) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" (identifier "local_5c") (= "=") (identifier "uVar19")) (; ";")) (expression_statement "FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);" (call_expression "FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74)" (identifier "FUN_00080c40") (argument_list "(param_1,param_2,param_3,iVar9,local_b0,local_74)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "iVar9") (, ",") (identifier "local_b0") (, ",") (identifier "local_74") () ")"))) (; ";")) (if_statement "if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }" (if "if") (parenthesized_expression "(*(char *)(*(int *)pbVar1 + 0x10) != '\0')" (( "(") (binary_expression "*(char *)(*(int *)pbVar1 + 0x10) != '\0'" (pointer_expression "*(char *)(*(int *)pbVar1 + 0x10)" (* "*") (cast_expression "(char *)(*(int *)pbVar1 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 0x10)" (( "(") (binary_expression "*(int *)pbVar1 + 0x10" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }\n      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);\n      if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }\n      uVar10 = FUN_00081560(param_1);\n      uVar19 = FUN_0007cbc0(param_1,local_5c,0);\n      piVar12 = *(int **)(param_1 + 0x13c);\n      iVar9 = local_68;\n      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;\n      goto LAB_0008822e;\n    }" ({ "{") (if_statement "if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {\n        FUN_0007d770(param_1,param_2);\n      }" (if "if") (parenthesized_expression "(*(char *)(*(int *)pbVar1 + 0x11) == '\0')" (( "(") (binary_expression "*(char *)(*(int *)pbVar1 + 0x11) == '\0'" (pointer_expression "*(char *)(*(int *)pbVar1 + 0x11)" (* "*") (cast_expression "(char *)(*(int *)pbVar1 + 0x11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 0x11)" (( "(") (binary_expression "*(int *)pbVar1 + 0x11" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "0x11")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        FUN_0007d770(param_1,param_2);\n      }" ({ "{") (expression_statement "FUN_0007d770(param_1,param_2);" (call_expression "FUN_0007d770(param_1,param_2)" (identifier "FUN_0007d770") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);" (call_expression "FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1)" (identifier "FUN_00115690") (argument_list "(*(undefined4 *)(param_1 + 4),param_3,param_1)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (, ",") (identifier "param_3") (, ",") (identifier "param_1") () ")"))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x1d0) != 0) {\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x1d0) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x1d0) != 0" (pointer_expression "*(int *)(param_1 + 0x1d0)" (* "*") (cast_expression "(int *)(param_1 + 0x1d0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1d0)" (( "(") (binary_expression "param_1 + 0x1d0" (identifier "param_1") (+ "+") (number_literal "0x1d0")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_00066ab0(*(int *)(param_1 + 0x1d0));\n        FUN_00080980(param_1,param_3);\n      }" ({ "{") (expression_statement "FUN_00066ab0(*(int *)(param_1 + 0x1d0));" (call_expression "FUN_00066ab0(*(int *)(param_1 + 0x1d0))" (identifier "FUN_00066ab0") (argument_list "(*(int *)(param_1 + 0x1d0))" (( "(") (pointer_expression "*(int *)(param_1 + 0x1d0)" (* "*") (cast_expression "(int *)(param_1 + 0x1d0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1d0)" (( "(") (binary_expression "param_1 + 0x1d0" (identifier "param_1") (+ "+") (number_literal "0x1d0")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00080980(param_1,param_3);" (call_expression "FUN_00080980(param_1,param_3)" (identifier "FUN_00080980") (argument_list "(param_1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar10 = FUN_00081560(param_1);" (assignment_expression "uVar10 = FUN_00081560(param_1)" (identifier "uVar10") (= "=") (call_expression "FUN_00081560(param_1)" (identifier "FUN_00081560") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar19 = FUN_0007cbc0(param_1,local_5c,0);" (assignment_expression "uVar19 = FUN_0007cbc0(param_1,local_5c,0)" (identifier "uVar19") (= "=") (call_expression "FUN_0007cbc0(param_1,local_5c,0)" (identifier "FUN_0007cbc0") (argument_list "(param_1,local_5c,0)" (( "(") (identifier "param_1") (, ",") (identifier "local_5c") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "piVar12 = *(int **)(param_1 + 0x13c);" (assignment_expression "piVar12 = *(int **)(param_1 + 0x13c)" (identifier "piVar12") (= "=") (pointer_expression "*(int **)(param_1 + 0x13c)" (* "*") (cast_expression "(int **)(param_1 + 0x13c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x13c)" (( "(") (binary_expression "param_1 + 0x13c" (identifier "param_1") (+ "+") (number_literal "0x13c")) () ")"))))) (; ";")) (expression_statement "iVar9 = local_68;" (assignment_expression "iVar9 = local_68" (identifier "iVar9") (= "=") (identifier "local_68")) (; ";")) (if_statement "if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;" (if "if") (parenthesized_expression "(piVar12 == *(int **)(param_1 + 0x140))" (( "(") (binary_expression "piVar12 == *(int **)(param_1 + 0x140)" (identifier "piVar12") (== "==") (pointer_expression "*(int **)(param_1 + 0x140)" (* "*") (cast_expression "(int **)(param_1 + 0x140)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")"))))) () ")")) (goto_statement "goto LAB_00088259;" (goto "goto") (statement_identifier "LAB_00088259") (; ";"))) (goto_statement "goto LAB_0008822e;" (goto "goto") (statement_identifier "LAB_0008822e") (; ";")) (} "}"))) (labeled_statement "LAB_00088c31:\n    cVar7 = FUN_0007a5f0();" (statement_identifier "LAB_00088c31") (: ":") (expression_statement "cVar7 = FUN_0007a5f0();" (assignment_expression "cVar7 = FUN_0007a5f0()" (identifier "cVar7") (= "=") (call_expression "FUN_0007a5f0()" (identifier "FUN_0007a5f0") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "iVar8 = extraout_ECX;" (assignment_expression "iVar8 = extraout_ECX" (identifier "iVar8") (= "=") (identifier "extraout_ECX")) (; ";")) (expression_statement "iVar16 = local_90;" (assignment_expression "iVar16 = local_90" (identifier "iVar16") (= "=") (identifier "local_90")) (; ";")) (labeled_statement "LAB_00087f2e:\n    if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" (statement_identifier "LAB_00087f2e") (: ":") (if_statement "if (cVar7 == '\0') {\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }\n    else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" (if "if") (parenthesized_expression "(cVar7 == '\0')" (( "(") (binary_expression "cVar7 == '\0'" (identifier "cVar7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      local_80 = 0;\nLAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }\n      uVar19 = local_5c;\n      if (local_80 == 0) goto LAB_00087f52;\nLAB_0008878f:\n      FUN_000bee40(local_80,local_8c);\n      if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }\nLAB_000887ba:\n      FUN_000bee40(local_80,local_94);\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" ({ "{") (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" (identifier "local_80") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00087f39:\n      if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }" (statement_identifier "LAB_00087f39") (: ":") (if_statement "if (local_8c == (int *)0x0) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }" (if "if") (parenthesized_expression "(local_8c == (int *)0x0)" (( "(") (binary_expression "local_8c == (int *)0x0" (identifier "local_8c") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);\n      }" ({ "{") (expression_statement "FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f)" (( "(") (binary_expression "unaff_EDI + 0x19b1cf" (identifier "unaff_EDI") (+ "+") (number_literal "0x19b1cf")) (, ",") (number_literal "0xb0f") (, ",") (binary_expression "unaff_EDI + 0x19c44f" (identifier "unaff_EDI") (+ "+") (number_literal "0x19c44f")) () ")"))) (; ";")) (} "}")))) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" (identifier "uVar19") (= "=") (identifier "local_5c")) (; ";")) (if_statement "if (local_80 == 0) goto LAB_00087f52;" (if "if") (parenthesized_expression "(local_80 == 0)" (( "(") (binary_expression "local_80 == 0" (identifier "local_80") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00087f52;" (goto "goto") (statement_identifier "LAB_00087f52") (; ";"))) (labeled_statement "LAB_0008878f:\n      FUN_000bee40(local_80,local_8c);" (statement_identifier "LAB_0008878f") (: ":") (expression_statement "FUN_000bee40(local_80,local_8c);" (call_expression "FUN_000bee40(local_80,local_8c)" (identifier "FUN_000bee40") (argument_list "(local_80,local_8c)" (( "(") (identifier "local_80") (, ",") (identifier "local_8c") () ")"))) (; ";"))) (if_statement "if (iVar16 != 0) {\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }" (if "if") (parenthesized_expression "(iVar16 != 0)" (( "(") (binary_expression "iVar16 != 0" (identifier "iVar16") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);\n        if (local_80 == 0) goto LAB_00087f7a;\n      }" ({ "{") (labeled_statement "LAB_00087f5a:\n        FUN_000bee40(iVar16,local_8c);" (statement_identifier "LAB_00087f5a") (: ":") (expression_statement "FUN_000bee40(iVar16,local_8c);" (call_expression "FUN_000bee40(iVar16,local_8c)" (identifier "FUN_000bee40") (argument_list "(iVar16,local_8c)" (( "(") (identifier "iVar16") (, ",") (identifier "local_8c") () ")"))) (; ";"))) (if_statement "if (local_80 == 0) goto LAB_00087f7a;" (if "if") (parenthesized_expression "(local_80 == 0)" (( "(") (binary_expression "local_80 == 0" (identifier "local_80") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00087f7a;" (goto "goto") (statement_identifier "LAB_00087f7a") (; ";"))) (} "}"))) (labeled_statement "LAB_000887ba:\n      FUN_000bee40(local_80,local_94);" (statement_identifier "LAB_000887ba") (: ":") (expression_statement "FUN_000bee40(local_80,local_94);" (call_expression "FUN_000bee40(local_80,local_94)" (identifier "FUN_000bee40") (argument_list "(local_80,local_94)" (( "(") (identifier "local_80") (, ",") (identifier "local_94") () ")"))) (; ";"))) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" (else "else") (compound_statement "{\nLAB_00087f7a:\n      local_80 = 0;\n      iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    }" ({ "{") (labeled_statement "LAB_00087f7a:\n      local_80 = 0;" (statement_identifier "LAB_00087f7a") (: ":") (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" (identifier "local_80") (= "=") (number_literal "0")) (; ";"))) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))))) (expression_statement "iVar9 = *(int *)(param_1 + 4);" (assignment_expression "iVar9 = *(int *)(param_1 + 4)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" (identifier "uVar19") (= "=") (identifier "local_5c")) (; ";")) (if_statement "if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;" (if "if") (parenthesized_expression "(*(char *)(iVar9 + 0xac) == '\0')" (( "(") (binary_expression "*(char *)(iVar9 + 0xac) == '\0'" (pointer_expression "*(char *)(iVar9 + 0xac)" (* "*") (cast_expression "(char *)(iVar9 + 0xac)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xac)" (( "(") (binary_expression "iVar9 + 0xac" (identifier "iVar9") (+ "+") (number_literal "0xac")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00088468;" (goto "goto") (statement_identifier "LAB_00088468") (; ";"))) (labeled_statement "LAB_00087f99:\n    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;" (statement_identifier "LAB_00087f99") (: ":") (if_statement "if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;" (if "if") (parenthesized_expression "(*(int *)(iVar9 + 0xbc) == 0)" (( "(") (binary_expression "*(int *)(iVar9 + 0xbc) == 0" (pointer_expression "*(int *)(iVar9 + 0xbc)" (* "*") (cast_expression "(int *)(iVar9 + 0xbc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xbc)" (( "(") (binary_expression "iVar9 + 0xbc" (identifier "iVar9") (+ "+") (number_literal "0xbc")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00088468;" (goto "goto") (statement_identifier "LAB_00088468") (; ";")))) (if_statement "if (iVar8 != 0) goto code_r0x00087faf;" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00087faf;" (goto "goto") (statement_identifier "code_r0x00087faf") (; ";"))) (} "}"))) (goto_statement "goto LAB_00088477;" (goto "goto") (statement_identifier "LAB_00088477") (; ";")) (labeled_statement "LAB_0008822e:\n  piVar2 = (int *)*piVar12;" (statement_identifier "LAB_0008822e") (: ":") (expression_statement "piVar2 = (int *)*piVar12;" (assignment_expression "piVar2 = (int *)*piVar12" (identifier "piVar2") (= "=") (cast_expression "(int *)*piVar12" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar12" (* "*") (identifier "piVar12")))) (; ";"))) (if_statement "if (piVar2[0x18] == -1) {\n    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }\n    iVar9 = iVar9 + 1;\n    piVar12 = piVar12 + 1;\n    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;\n    goto LAB_0008822e;\n  }" (if "if") (parenthesized_expression "(piVar2[0x18] == -1)" (( "(") (binary_expression "piVar2[0x18] == -1" (subscript_expression "piVar2[0x18]" (identifier "piVar2") ([ "[") (number_literal "0x18") (] "]")) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }\n    iVar9 = iVar9 + 1;\n    piVar12 = piVar12 + 1;\n    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;\n    goto LAB_0008822e;\n  }" ({ "{") (if_statement "if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {\n      piVar2[0x18] = iVar9;\n    }\n    else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }" (if "if") (parenthesized_expression "(*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447))" (( "(") (binary_expression "*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)" (pointer_expression "*(code **)(*piVar2 + 0x30)" (* "*") (cast_expression "(code **)(*piVar2 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 0x30)" (( "(") (binary_expression "*piVar2 + 0x30" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x30")) () ")")))) (== "==") (cast_expression "(code *)(unaff_EDI + 0x1447)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1447)" (( "(") (binary_expression "unaff_EDI + 0x1447" (identifier "unaff_EDI") (+ "+") (number_literal "0x1447")) () ")")))) () ")")) (compound_statement "{\n      piVar2[0x18] = iVar9;\n    }" ({ "{") (expression_statement "piVar2[0x18] = iVar9;" (assignment_expression "piVar2[0x18] = iVar9" (subscript_expression "piVar2[0x18]" (identifier "piVar2") ([ "[") (number_literal "0x18") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (} "}")) (else_clause "else {\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }" (else "else") (compound_statement "{\n      local_5c = uVar19;\n      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);\n      uVar19 = local_5c;\n    }" ({ "{") (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" (identifier "local_5c") (= "=") (identifier "uVar19")) (; ";")) (expression_statement "(**(code **)(*piVar2 + 0x30))(piVar2,iVar9);" (call_expression "(**(code **)(*piVar2 + 0x30))(piVar2,iVar9)" (parenthesized_expression "(**(code **)(*piVar2 + 0x30))" (( "(") (pointer_expression "**(code **)(*piVar2 + 0x30)" (* "*") (pointer_expression "*(code **)(*piVar2 + 0x30)" (* "*") (cast_expression "(code **)(*piVar2 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 0x30)" (( "(") (binary_expression "*piVar2 + 0x30" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "(piVar2,iVar9)" (( "(") (identifier "piVar2") (, ",") (identifier "iVar9") () ")"))) (; ";")) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" (identifier "uVar19") (= "=") (identifier "local_5c")) (; ";")) (} "}")))) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" (identifier "piVar12") (= "=") (binary_expression "piVar12 + 1" (identifier "piVar12") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;" (if "if") (parenthesized_expression "(*(int **)(param_1 + 0x140) == piVar12)" (( "(") (binary_expression "*(int **)(param_1 + 0x140) == piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" (* "*") (cast_expression "(int **)(param_1 + 0x140)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (== "==") (identifier "piVar12")) () ")")) (goto_statement "goto LAB_00088259;" (goto "goto") (statement_identifier "LAB_00088259") (; ";"))) (goto_statement "goto LAB_0008822e;" (goto "goto") (statement_identifier "LAB_0008822e") (; ";")) (} "}"))) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" (identifier "piVar12") (= "=") (binary_expression "piVar12 + 1" (identifier "piVar12") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(int **)(param_1 + 0x140) == piVar12) {\nLAB_00088259:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_0007d3e0(param_1,uVar10,local_b0);\n    uVar19 = local_5c;\n    if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }\n    local_5c = uVar19;\n    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined8 *)(param_1 + 0x1bc) = local_5c;\n    return;\n  }" (if "if") (parenthesized_expression "(*(int **)(param_1 + 0x140) == piVar12)" (( "(") (binary_expression "*(int **)(param_1 + 0x140) == piVar12" (pointer_expression "*(int **)(param_1 + 0x140)" (* "*") (cast_expression "(int **)(param_1 + 0x140)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x140)" (( "(") (binary_expression "param_1 + 0x140" (identifier "param_1") (+ "+") (number_literal "0x140")) () ")")))) (== "==") (identifier "piVar12")) () ")")) (compound_statement "{\nLAB_00088259:\n    local_68 = iVar9;\n    local_5c = uVar19;\n    FUN_0007d3e0(param_1,uVar10,local_b0);\n    uVar19 = local_5c;\n    if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }\n    local_5c = uVar19;\n    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);\n    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;\n    *(undefined8 *)(param_1 + 0x1bc) = local_5c;\n    return;\n  }" ({ "{") (labeled_statement "LAB_00088259:\n    local_68 = iVar9;" (statement_identifier "LAB_00088259") (: ":") (expression_statement "local_68 = iVar9;" (assignment_expression "local_68 = iVar9" (identifier "local_68") (= "=") (identifier "iVar9")) (; ";"))) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" (identifier "local_5c") (= "=") (identifier "uVar19")) (; ";")) (expression_statement "FUN_0007d3e0(param_1,uVar10,local_b0);" (call_expression "FUN_0007d3e0(param_1,uVar10,local_b0)" (identifier "FUN_0007d3e0") (argument_list "(param_1,uVar10,local_b0)" (( "(") (identifier "param_1") (, ",") (identifier "uVar10") (, ",") (identifier "local_b0") () ")"))) (; ";")) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" (identifier "uVar19") (= "=") (identifier "local_5c")) (; ";")) (if_statement "if (*(char *)(param_1 + 0x1ca) == '\0') {\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x1ca) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x1ca) == '\0'" (pointer_expression "*(char *)(param_1 + 0x1ca)" (* "*") (cast_expression "(char *)(param_1 + 0x1ca)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1ca)" (( "(") (binary_expression "param_1 + 0x1ca" (identifier "param_1") (+ "+") (number_literal "0x1ca")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar19 = FUN_0007cbc0(param_1,local_5c,1);\n      local_5c = uVar19;\n      uVar19 = FUN_0007cbc0(param_1,uVar19,2);\n    }" ({ "{") (expression_statement "uVar19 = FUN_0007cbc0(param_1,local_5c,1);" (assignment_expression "uVar19 = FUN_0007cbc0(param_1,local_5c,1)" (identifier "uVar19") (= "=") (call_expression "FUN_0007cbc0(param_1,local_5c,1)" (identifier "FUN_0007cbc0") (argument_list "(param_1,local_5c,1)" (( "(") (identifier "param_1") (, ",") (identifier "local_5c") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" (identifier "local_5c") (= "=") (identifier "uVar19")) (; ";")) (expression_statement "uVar19 = FUN_0007cbc0(param_1,uVar19,2);" (assignment_expression "uVar19 = FUN_0007cbc0(param_1,uVar19,2)" (identifier "uVar19") (= "=") (call_expression "FUN_0007cbc0(param_1,uVar19,2)" (identifier "FUN_0007cbc0") (argument_list "(param_1,uVar19,2)" (( "(") (identifier "param_1") (, ",") (identifier "uVar19") (, ",") (number_literal "2") () ")")))) (; ";")) (} "}"))) (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" (identifier "local_5c") (= "=") (identifier "uVar19")) (; ";")) (expression_statement "FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);" (call_expression "FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10)" (identifier "FUN_000ba760") (argument_list "(local_94,*(undefined4 *)(param_1 + 0x160),uVar10)" (( "(") (identifier "local_94") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x160)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x160)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x160)" (( "(") (binary_expression "param_1 + 0x160" (identifier "param_1") (+ "+") (number_literal "0x160")) () ")")))) (, ",") (identifier "uVar10") () ")"))) (; ";")) (expression_statement "BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;" (assignment_expression "BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1" (subscript_expression "BYTE_ARRAY_002804b9[unaff_EDI + 0x10]" (identifier "BYTE_ARRAY_002804b9") ([ "[") (binary_expression "unaff_EDI + 0x10" (identifier "unaff_EDI") (+ "+") (number_literal "0x10")) (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x1bc) = local_5c;" (assignment_expression "*(undefined8 *)(param_1 + 0x1bc) = local_5c" (pointer_expression "*(undefined8 *)(param_1 + 0x1bc)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x1bc)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1bc)" (( "(") (binary_expression "param_1 + 0x1bc" (identifier "param_1") (+ "+") (number_literal "0x1bc")) () ")")))) (= "=") (identifier "local_5c")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (goto_statement "goto LAB_0008822e;" (goto "goto") (statement_identifier "LAB_0008822e") (; ";")) (labeled_statement "code_r0x00087faf:\n  if (*(char *)(iVar8 + 0x318d) == '\0') {\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }" (statement_identifier "code_r0x00087faf") (: ":") (if_statement "if (*(char *)(iVar8 + 0x318d) == '\0') {\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar8 + 0x318d) == '\0')" (( "(") (binary_expression "*(char *)(iVar8 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x318d)" (* "*") (cast_expression "(char *)(iVar8 + 0x318d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x318d)" (( "(") (binary_expression "iVar8 + 0x318d" (identifier "iVar8") (+ "+") (number_literal "0x318d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_5c = uVar19;\n    FUN_00109060(iVar9 + 0xac,local_94,local_8c);\n    iVar8 = *(int *)(*(int *)pbVar1 + 8);\n    uVar19 = local_5c;\nLAB_00088468:\n    local_68 = 1;\n    if (iVar8 == 0) goto LAB_00088477;\n  }" ({ "{") (expression_statement "local_5c = uVar19;" (assignment_expression "local_5c = uVar19" (identifier "local_5c") (= "=") (identifier "uVar19")) (; ";")) (expression_statement "FUN_00109060(iVar9 + 0xac,local_94,local_8c);" (call_expression "FUN_00109060(iVar9 + 0xac,local_94,local_8c)" (identifier "FUN_00109060") (argument_list "(iVar9 + 0xac,local_94,local_8c)" (( "(") (binary_expression "iVar9 + 0xac" (identifier "iVar9") (+ "+") (number_literal "0xac")) (, ",") (identifier "local_94") (, ",") (identifier "local_8c") () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)(*(int *)pbVar1 + 8);" (assignment_expression "iVar8 = *(int *)(*(int *)pbVar1 + 8)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(*(int *)pbVar1 + 8)" (* "*") (cast_expression "(int *)(*(int *)pbVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar1 + 8)" (( "(") (binary_expression "*(int *)pbVar1 + 8" (pointer_expression "*(int *)pbVar1" (* "*") (cast_expression "(int *)pbVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar1"))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar19 = local_5c;" (assignment_expression "uVar19 = local_5c" (identifier "uVar19") (= "=") (identifier "local_5c")) (; ";")) (labeled_statement "LAB_00088468:\n    local_68 = 1;" (statement_identifier "LAB_00088468") (: ":") (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" (identifier "local_68") (= "=") (number_literal "1")) (; ";"))) (if_statement "if (iVar8 == 0) goto LAB_00088477;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00088477;" (goto "goto") (statement_identifier "LAB_00088477") (; ";"))) (} "}")))) (goto_statement "goto LAB_00087fc3;" (goto "goto") (statement_identifier "LAB_00087fc3") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: off_t finalize(Layout * this, Input_objects * input_objects,
   Symbol_table * symtab, Target * target, Task * task) */

type_1 __thiscall
var_11::type_2::function_1
          (type_2 *this,type_3 *input_objects,type_4 *symtab,type_5 *var_41,type_6 *task)

{
  type_7 *pbVar1;
  type_7 var_59;
  type_8 *var_76;
  type_9 *pOVar4;
  type_10 var_49;
  type_10 var_51;
  type_10 var_56;
  type_10 var_57;
  char var_32;
  type_11 *var_35;
  type_12 var_39;
  type_13 *var_45;
  type_14 *var_70;
  type_9 *pOVar11;
  type_15 *pSVar12;
  type_10 var_55;
  type_16 *od;
  type_17 *var_31;
  int extraout_ECX;
  int var_30;
  type_10 var_54;
  type_13 *var_61;
  int var_63;
  type_18 var_75;
  type_10 var_52;
  type_10 var_53;
  type_10 var_50;
  int var_6;
  int var_2;
  type_1 oVar24;
  type_19 var_43;
  type_4 *__in_chrg;
  type_20 *in_stack_ffffff34;
  type_20 *in_stack_ffffff38;
  type_16 **local_b0;
  int var_48;
  int var_47;
  type_21 local_9c;
  type_22 *local_94;
  type_13 *var_44;
  type_23 *var_29;
  int var_64;
  type_13 *var_71;
  type_10 var_23;
  type_10 var_22;
  type_9 *dynstr;
  type_10 var_14;
  type_18 local_64;
  type_18 local_60;
  type_1 off;
  
  var_1();
  var_23 = 0;
  var_22 = 0;
  if (*(type_17 **)(*(int *)var_41 + 0x10) != (type_17 *)(var_2 + 0x1137)) {
    (**(type_17 **)(*(int *)var_41 + 0x10))(var_41,this,input_objects,symtab);
  }
  var_3(this,task,input_objects);
  var_4(this);
  pbVar1 = var_5 + var_2 + 0x22;
  var_6 = *(int *)pbVar1;
  if (*(int *)(var_6 + 8) == 0) goto LAB_00088477;
  if (*(char *)(*(int *)(var_6 + 8) + 0x318d) == '\0') {
    if (*(char *)(var_6 + 0x10) == '\0') goto LAB_00088c31;
    if (*(char *)(var_6 + 0x11) == '\0') {
      pSVar12 = this->script_options_;
      if (((pSVar12->script_sections_).saw_sections_clause_ == false) ||
         (var_44 = (type_13 *)0x0,
         (pSVar12->script_sections_).phdrs_elements_ == (type_24 *)0x0)) {
        var_44 = var_7(this,6,4);
        pSVar12 = this->script_options_;
      }
      var_14 = 0;
      local_64 = (type_18)0x0;
      local_60 = (type_18)0x0;
                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */
      Versions::var_8((var_8 *)&off,&pSVar12->version_script_info_,&this->dynpool_);
                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */
      var_9
                (this,input_objects,symtab,&dynstr,&var_23,&var_22,
                 (var_10<var_11::type_14*,var_12::allocator<var_11::type_14*>var_13> *var_28)&var_14,(var_8 *)&off);
      var_6 = *(int *)(*(int *)pbVar1 + 8);
      if (var_6 == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */
        var_15((char *)(var_2 + 0x198c47),0x5c,(char *)(var_2 + 0x19c67f));
      }
      if (((*(char *)(var_6 + 0x1a25) == '\0') || (*(int *)(var_6 + 0x1f64) != 0)) &&
         (this->interp_segment_ == (type_13 *)0x0)) {
                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */
        var_16(this,var_41);
      }
      var_17(this,input_objects,symtab);
      var_18<var_19>::var_20(&this->dynpool_);
      var_21
                (this,(var_8 *)&off,symtab,var_22 + var_23,
                 (var_10<var_11::type_14*,var_12::allocator<var_11::type_14*>var_13> *var_28)&var_14,dynstr);
      __in_chrg = symtab;
      var_24(this,symtab);
      Versions::~var_8((var_8 *)&off,(int)__in_chrg);
      if (var_14 != 0) {
        var_25((void *)var_14);
      }
      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;
      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {
        var_29 = (type_23 *)0x0;
        goto LAB_00087db2;
      }
    }
    else {
      var_44 = (type_13 *)0x0;
    }
    var_29 = (type_23 *)var_26(0x24);
                    /* try { // try from 00088b86 to 00088b8a has its CatchHandler @ 00088ca5 */
    Output_segment_headers::type_23(var_29,&this->segment_list_);
  }
  else {
    var_44 = (type_13 *)0x0;
    var_29 = (type_23 *)0x0;
  }
LAB_00087db2:
  local_94 = (type_22 *)var_26(0x34);
                    /* try { // try from 00087dda to 00087dde has its CatchHandler @ 00088cac */
  Output_file_header::type_22(local_94,var_41,symtab,var_29);
  off = var_27(off._4_4_,local_94);
  local_b0 = (type_16 **)&off;
  std::var_10<var_11::type_16*,var_12::allocator<var_11::type_16*>var_13>::
  emplace_back<var_11::type_16*var_28>(&this->special_output_list_,local_b0);
  if (var_29 != (type_23 *)0x0) {
    off = var_27(off._4_4_,var_29);
    std::var_10<var_11::type_16*,var_12::allocator<var_11::type_16*>var_13>::
    emplace_back<var_11::type_16*var_28>(&this->special_output_list_,local_b0);
  }
  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {
    var_6 = *(int *)pbVar1;
    var_30 = *(int *)(var_6 + 8);
    if (var_30 != 0) goto LAB_00087e3a;
LAB_00088adb:
    var_31 = *(type_17 **)(*(int *)var_41 + 0x68);
    if (var_31 == (type_17 *)(var_2 + 0x1497)) {
LAB_00088477:
                    /* WARNING: Subroutine does not return */
      var_15((char *)(var_2 + 0x198c47),0x5c,(char *)(var_2 + 0x19c67f));
    }
LAB_00088af4:
    var_32 = (*var_31)(var_41);
LAB_00087e60:
    if (var_32 == '\0') goto LAB_00087e72;
  }
  else {
    var_33(this);
    var_6 = *(int *)pbVar1;
    var_30 = *(int *)(var_6 + 8);
    if (var_30 == 0) goto LAB_00088adb;
LAB_00087e3a:
    if ((*(type_7 *)(var_6 + 0x14) & 8) == 0) {
      var_31 = *(type_17 **)(*(int *)var_41 + 0x68);
      if (var_31 != (type_17 *)(var_2 + 0x1497)) goto LAB_00088af4;
      var_32 = *(char *)(var_30 + 0x3209);
      goto LAB_00087e60;
    }
  }
  var_34(this);
LAB_00087e72:
  var_64 = 0;
LAB_00087e80:
  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {
    var_35 = *(type_11 **)(*(int *)pbVar1 + 8);
    if (var_35 == (type_11 *)0x0) goto LAB_00088477;
    var_71 = (type_13 *)0x0;
    if ((var_35->relocatable_).value == false) {
      var_71 = var_36(this,var_41);
      goto LAB_00088944;
    }
  }
  else {
    var_71 = var_37(this,symtab);
LAB_00088944:
    var_35 = *(type_11 **)(*(int *)pbVar1 + 8);
    if (var_35 == (type_11 *)0x0) goto LAB_00088477;
  }
  var_39 = type_11::var_38(var_35);
  var_45 = (type_13 *)0x0;
  if (var_39 == var_40) {
    var_45 = var_71;
  }
  var_6 = *(int *)(*(int *)pbVar1 + 8);
  if (var_6 != 0) {
    var_30 = *(int *)(var_41 + 4);
    if (*(char *)(var_30 + 0x30) == '\0') {
      if (*(char *)(var_6 + 0x41b8) != '\0') {
        local_9c = *(type_21 *)(var_6 + 0x5218);
        if (*(int *)(var_6 + 0x521c) == 0 && *(int *)(var_6 + 0x5218) == 0) {
          local_9c = *(type_21 *)(var_30 + 0x20);
        }
        var_43 = var_42(*(type_25 *)(var_6 + 0x41bc),*(type_25 *)(var_6 + 0x41c0),
                           (int)local_9c,local_9c._4_4_);
        goto joined_r0x0008887a;
      }
    }
    else if (*(char *)(var_6 + 0x423c) != '\0') {
      local_9c = *(type_21 *)(var_6 + 0x5218);
      if (*(int *)(var_6 + 0x521c) == 0 && *(int *)(var_6 + 0x5218) == 0) {
        local_9c = *(type_21 *)(var_30 + 0x20);
      }
      var_43 = var_42(*(type_25 *)(var_6 + 0x4240),*(type_25 *)(var_6 + 0x4244),
                         (int)local_9c,local_9c._4_4_);
joined_r0x0008887a:
      if (var_43 != 0) {
        var_32 = *(char *)(var_6 + 0x318d);
        var_61 = (type_13 *)0x0;
        goto LAB_00087f2e;
      }
    }
    var_61 = var_44;
    if ((var_44 != (type_13 *)0x0) && (var_45 == (type_13 *)0x0)) {
      if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {
                    /* WARNING: Subroutine does not return */
        var_15((char *)(var_2 + 0x19b1cf),0xaef,(char *)(var_2 + 0x19c44f));
      }
      var_32 = *(char *)(var_6 + 0x318d);
      goto LAB_00087f2e;
    }
    var_32 = *(char *)(var_6 + 0x318d);
    if (var_45 == (type_13 *)0x0) goto LAB_00087f2e;
    var_71 = var_45;
    if (((var_45->field_0x19c & 2) == 0) ||
       ((this->script_options_->script_sections_).saw_sections_clause_ != false)) {
      if (var_32 != '\0') goto LAB_000887ba;
      goto LAB_00087f39;
    }
    if (var_32 != '\0') goto LAB_000887ba;
    if ((((local_94->super_Output_data).field_0x1c & 2) == 0) &&
       ((*(local_94->super_Output_data)._vptr_Output_data[0xe])(local_94),
       ((local_94->super_Output_data).field_0x1c & 2) == 0)) {
LAB_00088c5f:
                    /* WARNING: Subroutine does not return */
      var_15((char *)(var_2 + 0x1998e3),0x163,(char *)(var_2 + 0x19c43b));
    }
    if (((var_29->super_Output_data).field_0x1c & 2) == 0) {
      (*(var_29->super_Output_data)._vptr_Output_data[0xe])(var_29);
      if (((var_29->super_Output_data).field_0x1c & 2) == 0) goto LAB_00088c5f;
      if (((local_94->super_Output_data).field_0x1c & 2) == 0) {
                    /* WARNING: Subroutine does not return */
        var_15((char *)(var_2 + 0x1998e3),0xcf,(char *)(var_2 + 0x19c68f));
      }
    }
    var_50 = (int)(local_94->super_Output_data).data_size_ +
             (int)(var_29->super_Output_data).data_size_;
    var_6 = *(int *)(*(int *)pbVar1 + 8);
    if (var_6 == 0) {
                    /* WARNING: Subroutine does not return */
      Target::var_46((type_5 *)in_stack_ffffff34);
    }
    var_47 = *(int *)(var_6 + 0x521c);
    var_48 = *(int *)(var_6 + 0x5218);
    if (var_47 == 0 && var_48 == 0) {
      var_47 = *(int *)(*(int *)(var_41 + 4) + 0x24);
      var_48 = *(int *)(*(int *)(var_41 + 4) + 0x20);
    }
    var_49 = (type_10)var_45->paddr_;
    var_51 = *(type_10 *)((int)&var_45->paddr_ + 4);
    var_52 = var_49 - var_50 & -var_48;
    var_53 = var_51 - (var_49 < var_50) & -(var_47 + (type_10)(var_48 != 0));
    var_55 = var_49 - var_52;
    var_54 = (var_51 - var_53) - (type_10)(var_49 < var_52);
    var_32 = *(char *)(var_6 + 0x318d);
    if (var_54 <= var_51 && (type_10)(var_49 < var_55) <= var_51 - var_54) {
      var_56 = *(type_10 *)((int)&var_45->vaddr_ + 4);
      var_57 = (type_10)var_45->vaddr_;
      if (var_54 <= var_56 && (type_10)(var_57 < var_55) <= var_56 - var_54) {
        *(type_10 *)&var_45->paddr_ = var_52;
        *(type_10 *)&var_45->vaddr_ = (var_57 - var_49) + var_52;
        *(type_10 *)((int)&var_45->vaddr_ + 4) =
             ((var_56 - var_51) - (type_10)(var_57 < var_49)) + var_53 + (type_10)var_58(var_57 - var_49,var_52)
        ;
        var_45->field_0x19c = var_45->field_0x19c | 2;
        *(type_10 *)((int)&var_45->paddr_ + 4) = var_53;
        var_6 = var_54 - (var_55 < var_50);
        if (var_32 != '\0') goto LAB_000887ba;
        if (var_55 - var_50 == 0 && var_6 == 0) goto LAB_0008878f;
        if (var_45 == (type_13 *)0x0) goto LAB_0008878f;
        od = (type_16 *)var_26(0x2c);
        *(type_25 *)&od->address_ = 0;
        *(type_10 *)&od->data_size_ = var_55 - var_50;
        var_59 = od->field_0x1c;
        *(type_25 *)((int)&od->address_ + 4) = 0;
        od[1]._vptr_Output_data = (type_8 **)0x0;
        *(type_25 *)&od[1].address_ = 1;
        od->field_0x1c = var_59 & 0xe0 | 10;
        *(type_25 *)((int)&od[1].address_ + 4) = 0;
        *(int *)((int)&od->data_size_ + 4) = var_6;
        *(type_25 *)&od->offset_ = 0xffffffff;
        *(type_25 *)((int)&od->offset_ + 4) = 0xffffffff;
        od->_vptr_Output_data = (type_8 **)(var_2 + 0x2759db);
        Output_segment::var_60(var_45,od);
        goto LAB_0008878f;
      }
    }
    if (var_32 != '\0') goto LAB_00087f7a;
    var_71 = (type_13 *)0x0;
LAB_00087f52:
    if (var_61 != (type_13 *)0x0) goto LAB_00087f5a;
    pSVar12 = this->script_options_;
    if ((pSVar12->script_sections_).saw_sections_clause_ != false) goto LAB_00087f99;
LAB_00087fc3:
    var_30 = var_64;
    var_14 = 1;
    if (*(char *)(var_6 + 0x318d) == '\0') {
      oVar24 = var_62(this,var_41,var_71,&var_14);
      var_6 = *(int *)pbVar1;
      var_63 = *(int *)(var_6 + 8);
      if (var_63 == 0) goto LAB_000888c2;
LAB_00087ff2:
      if ((*(type_7 *)(var_6 + 0x14) & 8) != 0) {
        if (var_64 == 0) {
          Relaxation_debug_check::var_65(this->relaxation_debug_check_,&this->section_list_);
        }
        else {
          Relaxation_debug_check::var_66
                    (this->relaxation_debug_check_,&this->section_list_);
        }
        var_6 = *(int *)pbVar1;
        var_63 = *(int *)(var_6 + 8);
        if (var_63 == 0) goto LAB_000888c2;
      }
      off = oVar24;
      if ((*(type_7 *)(var_6 + 0x14) & 8) != 0) goto LAB_00088970;
      var_31 = *(type_17 **)(*(int *)var_41 + 0x68);
      if (var_31 != (type_17 *)(var_2 + 0x1497)) goto LAB_000888db;
      if ((*(char *)(var_63 + 0x3209) != '\0') &&
         (var_31 = *(type_17 **)(*(int *)var_41 + 0x6c), var_31 != (type_17 *)(var_2 + 0x1147)))
      goto LAB_00088910;
    }
    else {
      oVar24 = var_67(this,&local_94->super_Output_data,&var_14);
      var_6 = *(int *)pbVar1;
      var_63 = *(int *)(var_6 + 8);
      if (var_63 != 0) goto LAB_00087ff2;
LAB_000888c2:
      off = oVar24;
      var_31 = *(type_17 **)(*(int *)var_41 + 0x68);
      if (var_31 == (type_17 *)(var_2 + 0x1497)) goto LAB_00088477;
LAB_000888db:
      var_32 = (*var_31)(var_41);
      if (var_32 != '\0') {
        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(type_7 *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {
          var_31 = *(type_17 **)(*(int *)var_41 + 0x6c);
          if (var_31 == (type_17 *)(var_2 + 0x1147)) goto LAB_00088098;
LAB_00088910:
          var_64 = var_64 + 1;
          var_32 = (*var_31)(var_41,var_64,input_objects,symtab,this);
        }
        else {
LAB_00088970:
          var_64 = var_64 + 1;
          var_32 = var_64 < 2;
        }
        var_64 = var_30 + 1;
        if (var_32 != '\0') {
          var_68(this);
          goto LAB_00087e80;
        }
      }
    }
LAB_00088098:
    var_64 = var_30 + 1;
    var_70 = type_4::var_69(symtab,(char *)(var_2 + 0x19b53f),(char *)0x0);
    if ((var_70 != (type_14 *)0x0) && ((var_70->field_0x2c & 4) != 0)) {
      if (var_71 == (type_13 *)0x0) {
        Symbol::var_72(var_70);
      }
      else {
        Symbol::var_73(var_70,var_71,SEGMENT_START);
      }
    }
    off = var_74(this,off,BEFORE_INPUT_SECTIONS_PASS);
    var_75 = (this->unattached_section_list_).
               super__Vector_base<var_11::type_9*,var_12::allocator<var_11::type_9*>var_13>.
               _M_impl._M_start;
    var_50 = var_14;
    if ((this->unattached_section_list_).
        super__Vector_base<var_11::type_9*,var_12::allocator<var_11::type_9*>var_13>._M_impl.
        _M_finish != var_75) {
      do {
        while (pOVar11 = *var_75, pOVar11->out_shndx_ == 0xffffffff) {
          var_76 = (pOVar11->super_Output_data)._vptr_Output_data[0xc];
          if (var_76 == (type_8 *)(var_2 + 0x1447)) {
            pOVar11->out_shndx_ = var_50;
          }
          else {
            (*var_76)(pOVar11,var_50);
          }
          var_50 = var_50 + 1;
          var_75 = var_75 + 1;
          if ((this->unattached_section_list_).
              super__Vector_base<var_11::type_9*,var_12::allocator<var_11::type_9*>var_13>.
              _M_impl._M_finish == var_75) goto LAB_00088157;
        }
        var_75 = var_75 + 1;
      } while ((this->unattached_section_list_).
               super__Vector_base<var_11::type_9*,var_12::allocator<var_11::type_9*>var_13>.
               _M_impl._M_finish != var_75);
    }
LAB_00088157:
    var_14 = var_50;
    var_77(this,input_objects,symtab,var_50,(type_1 *)local_b0,var_23);
    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {
      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {
        var_78(this,input_objects);
      }
      Script_options::var_79(this->script_options_,symtab,this);
      if (this->incremental_inputs_ != (type_26 *)0x0) {
        Incremental_inputs::function_1(this->incremental_inputs_);
        var_80(this,symtab);
      }
      pOVar11 = var_81(this);
      off = var_74(this,off,BEFORE_INPUT_SECTIONS_PASS);
      var_75 = (this->unattached_section_list_).
                 super__Vector_base<var_11::type_9*,var_12::allocator<var_11::type_9*>var_13>.
                 _M_impl._M_start;
      var_50 = var_14;
      if (var_75 ==
          (this->unattached_section_list_).
          super__Vector_base<var_11::type_9*,var_12::allocator<var_11::type_9*>var_13>._M_impl.
          _M_finish) goto LAB_00088259;
      goto LAB_0008822e;
    }
LAB_00088c31:
    var_32 = type_20::var_82(in_stack_ffffff34,in_stack_ffffff38);
    var_6 = extraout_ECX;
    var_61 = var_44;
LAB_00087f2e:
    if (var_32 == '\0') {
      var_71 = (type_13 *)0x0;
LAB_00087f39:
      if (var_29 == (type_23 *)0x0) {
                    /* WARNING: Subroutine does not return */
        var_15((char *)(var_2 + 0x19b1cf),0xb0f,(char *)(var_2 + 0x19c44f));
      }
      if (var_71 == (type_13 *)0x0) goto LAB_00087f52;
LAB_0008878f:
      Output_segment::var_60(var_71,&var_29->super_Output_data);
      if (var_61 != (type_13 *)0x0) {
LAB_00087f5a:
        Output_segment::var_60(var_61,&var_29->super_Output_data);
        if (var_71 == (type_13 *)0x0) goto LAB_00087f7a;
      }
LAB_000887ba:
      Output_segment::var_60(var_71,&local_94->super_Output_data);
      var_6 = *(int *)(*(int *)pbVar1 + 8);
    }
    else {
LAB_00087f7a:
      var_71 = (type_13 *)0x0;
      var_6 = *(int *)(*(int *)pbVar1 + 8);
    }
    pSVar12 = this->script_options_;
    if ((pSVar12->script_sections_).saw_sections_clause_ == false) goto LAB_00088468;
LAB_00087f99:
    if ((pSVar12->script_sections_).phdrs_elements_ == (type_24 *)0x0) goto LAB_00088468;
    if (var_6 != 0) goto code_r0x00087faf;
  }
  goto LAB_00088477;
LAB_0008822e:
  pOVar4 = *var_75;
  if (pOVar4->out_shndx_ == 0xffffffff) {
    var_76 = (pOVar4->super_Output_data)._vptr_Output_data[0xc];
    if (var_76 == (type_8 *)(var_2 + 0x1447)) {
      pOVar4->out_shndx_ = var_50;
    }
    else {
      (*var_76)(pOVar4,var_50);
    }
    var_50 = var_50 + 1;
    var_75 = var_75 + 1;
    if ((this->unattached_section_list_).
        super__Vector_base<var_11::type_9*,var_12::allocator<var_11::type_9*>var_13>._M_impl.
        _M_finish == var_75) goto LAB_00088259;
    goto LAB_0008822e;
  }
  var_75 = var_75 + 1;
  if ((this->unattached_section_list_).
      super__Vector_base<var_11::type_9*,var_12::allocator<var_11::type_9*>var_13>._M_impl.
      _M_finish == var_75) {
LAB_00088259:
    var_14 = var_50;
    var_83(this,pOVar11,(type_1 *)local_b0);
    if (this->any_postprocessing_sections_ == false) {
      off = var_74(this,off,POSTPROCESSING_SECTIONS_PASS);
      off = var_74(this,off,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);
    }
    Output_file_header::var_84(local_94,this->section_headers_,pOVar11);
    BYTE_ARRAY_002804b9[var_2 + 0x10] = 1;
    *(type_25 *)((int)&this->output_file_size_ + 4) = off._4_4_;
    *(type_25 *)&this->output_file_size_ = (type_25)off;
    return off;
  }
  goto LAB_0008822e;
code_r0x00087faf:
  if (*(char *)(var_6 + 0x318d) == '\0') {
    Script_sections::var_85
              (&pSVar12->script_sections_,&local_94->super_Output_data,&var_29->super_Output_data)
    ;
    var_6 = *(int *)(*(int *)pbVar1 + 8);
LAB_00088468:
    var_14 = 1;
    if (var_6 == 0) goto LAB_00088477;
  }
  goto LAB_00087fc3;
}


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

void MASKED(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,undefined4 param_5)

{
  byte *pbVar1;
  int *piVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  char cVar7;
  int iVar8;
  int iVar9;
  undefined4 uVar10;
  uint uVar11;
  int *piVar12;
  code *pcVar13;
  uint uVar14;
  int extraout_ECX;
  uint uVar15;
  int iVar16;
  uint uVar17;
  uint uVar18;
  int unaff_EDI;
  undefined8 uVar19;
  longlong lVar20;
  undefined8 *local_b0;
  int local_a4;
  int local_a0;
  int local_9c;
  int local_98;
  int *local_94;
  int local_90;
  int *local_8c;
  int local_88;
  int local_80;
  int local_74;
  int local_70;
  undefined4 local_6c;
  int local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined8 local_5c;
  
  FUN_0004fb7e();
  local_74 = 0;
  local_70 = 0;
  if (*(code **)(*param_4 + 0x10) != (code *)(unaff_EDI + 0x1137)) {
    (**(code **)(*param_4 + 0x10))(param_4,param_1,param_2,param_3);
  }
  FUN_0007d2c0(param_1,param_5,param_2);
  FUN_00082750(param_1);
  pbVar1 = BYTE_ARRAY_0027a62d + unaff_EDI + 0x22;
  iVar9 = *(int *)pbVar1;
  uVar19 = local_5c;
  if (*(int *)(iVar9 + 8) == 0) goto LAB_00088477;
  if (*(char *)(*(int *)(iVar9 + 8) + 0x318d) == '\0') {
    if (*(char *)(iVar9 + 0x10) == '\0') goto LAB_00088c31;
    if (*(char *)(iVar9 + 0x11) == '\0') {
      iVar9 = *(int *)(param_1 + 4);
      if ((*(char *)(iVar9 + 0xac) == '\0') || (local_90 = 0, *(int *)(iVar9 + 0xbc) == 0)) {
        local_90 = FUN_0007f710(param_1,6,4);
        iVar9 = *(int *)(param_1 + 4);
      }
      local_68 = 0;
      local_64 = 0;
      local_60 = 0;
                    /* try { // try from 0008834d to 00088351 has its CatchHandler @ 00088c9e */
      FUN_00146780(&local_5c,iVar9 + 0x68,param_1 + 0xa0);
                    /* try { // try from 0008836f to 000883f1 has its CatchHandler @ 00088c97 */
      FUN_00085d40(param_1,param_2,param_3,&local_6c,&local_74,&local_70,&local_68,&local_5c);
      iVar9 = *(int *)(*(int *)pbVar1 + 8);
      if (iVar9 == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00088c5a to 00088c5e has its CatchHandler @ 00088c97 */
        FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f,0);
      }
      if (((*(char *)(iVar9 + 0x1a25) == '\0') || (*(int *)(iVar9 + 0x1f64) != 0)) &&
         (*(int *)(param_1 + 0x16c) == 0)) {
                    /* try { // try from 00088be8 to 00088bec has its CatchHandler @ 00088c97 */
        FUN_00086960(param_1,param_4);
      }
      FUN_000817a0(param_1,param_2,param_3);
      FUN_001215b0(param_1 + 0xa0);
      FUN_00086870(param_1,&local_5c,param_3,local_70 + local_74,&local_68,local_6c);
      FUN_0007d800(param_1,param_3);
      FUN_001459e0(&local_5c);
      if (local_68 != 0) {
        FUN_001807a0(local_68);
      }
      uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);
      if (*(int *)(*(int *)pbVar1 + 8) == 0) goto LAB_00088477;
      if (*(char *)(*(int *)(*(int *)pbVar1 + 8) + 0x318d) != '\0') {
        local_8c = (int *)0x0;
        goto LAB_00087db2;
      }
    }
    else {
      local_90 = 0;
    }
    local_8c = (int *)FUN_0017ebf0(0x24);
                    /* try { // try from 00088b86 to 00088b8a has its CatchHandler @ 00088ca5 */
    FUN_000ba6d0(local_8c,param_1 + 0x124);
  }
  else {
    local_90 = 0;
    local_8c = (int *)0x0;
  }
LAB_00087db2:
  local_94 = (int *)FUN_0017ebf0(0x34);
                    /* try { // try from 00087dda to 00087dde has its CatchHandler @ 00088cac */
  FUN_000ba800(local_94,param_4,param_3,local_8c);
  local_b0 = &local_5c;
  local_5c._0_4_ = local_94;
  FUN_0008a170(param_1 + 0x148,local_b0);
  if (local_8c != (int *)0x0) {
    local_5c._0_4_ = local_8c;
    FUN_0008a170(param_1 + 0x148,local_b0);
  }
  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {
    iVar9 = *(int *)pbVar1;
    iVar8 = *(int *)(iVar9 + 8);
    if (iVar8 != 0) goto LAB_00087e3a;
LAB_00088adb:
    uVar19 = CONCAT44(local_5c._4_4_,(int *)local_5c);
    pcVar13 = *(code **)(*param_4 + 0x68);
    if (pcVar13 == (code *)(unaff_EDI + 0x1497)) {
LAB_00088477:
      local_5c = uVar19;
                    /* WARNING: Subroutine does not return */
      FUN_0005f0b0(unaff_EDI + 0x198c47,0x5c,unaff_EDI + 0x19c67f);
    }
LAB_00088af4:
    cVar7 = (*pcVar13)(param_4);
LAB_00087e60:
    if (cVar7 == '\0') goto LAB_00087e72;
  }
  else {
    FUN_0007d230(param_1);
    iVar9 = *(int *)pbVar1;
    iVar8 = *(int *)(iVar9 + 8);
    if (iVar8 == 0) goto LAB_00088adb;
LAB_00087e3a:
    if ((*(byte *)(iVar9 + 0x14) & 8) == 0) {
      pcVar13 = *(code **)(*param_4 + 0x68);
      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_00088af4;
      cVar7 = *(char *)(iVar8 + 0x3209);
      goto LAB_00087e60;
    }
  }
  FUN_00083a60(param_1);
LAB_00087e72:
  local_88 = 0;
LAB_00087e80:
  if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {
    iVar9 = *(int *)(*(int *)pbVar1 + 8);
    uVar19 = local_5c;
    if (iVar9 == 0) goto LAB_00088477;
    local_80 = 0;
    if (*(char *)(iVar9 + 0x318d) == '\0') {
      local_80 = FUN_00081670(param_1,param_4);
      uVar19 = local_5c;
      goto LAB_00088944;
    }
  }
  else {
    local_80 = FUN_0007d1e0(param_1,param_3);
    uVar19 = local_5c;
LAB_00088944:
    iVar9 = *(int *)(*(int *)pbVar1 + 8);
    if (iVar9 == 0) goto LAB_00088477;
  }
  local_5c = uVar19;
  iVar8 = FUN_000aa690(iVar9);
  iVar9 = 0;
  if (iVar8 == 0) {
    iVar9 = local_80;
  }
  iVar8 = *(int *)(*(int *)pbVar1 + 8);
  uVar19 = local_5c;
  if (iVar8 != 0) {
    iVar16 = param_4[1];
    if (*(char *)(iVar16 + 0x30) == '\0') {
      if (*(char *)(iVar8 + 0x41b8) != '\0') {
        local_98 = *(int *)(iVar8 + 0x521c);
        local_9c = *(int *)(iVar8 + 0x5218);
        if (local_98 == 0 && local_9c == 0) {
          local_9c = *(int *)(iVar16 + 0x20);
          local_98 = *(int *)(iVar16 + 0x24);
        }
        lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x41bc),*(undefined4 *)(iVar8 + 0x41c0),
                              local_9c,local_98);
        goto joined_r0x0008887a;
      }
    }
    else if (*(char *)(iVar8 + 0x423c) != '\0') {
      local_98 = *(int *)(iVar8 + 0x521c);
      local_9c = *(int *)(iVar8 + 0x5218);
      if (local_98 == 0 && local_9c == 0) {
        local_9c = *(int *)(iVar16 + 0x20);
        local_98 = *(int *)(iVar16 + 0x24);
      }
      lVar20 = FUN_00215240(*(undefined4 *)(iVar8 + 0x4240),*(undefined4 *)(iVar8 + 0x4244),local_9c
                            ,local_98);
joined_r0x0008887a:
      if (lVar20 != 0) {
        cVar7 = *(char *)(iVar8 + 0x318d);
        iVar16 = 0;
        goto LAB_00087f2e;
      }
    }
    iVar16 = local_90;
    if ((local_90 != 0) && (iVar9 == 0)) {
      if (*(char *)(*(int *)(param_1 + 4) + 0xac) == '\0') {
                    /* WARNING: Subroutine does not return */
        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xaef,unaff_EDI + 0x19c44f);
      }
      cVar7 = *(char *)(iVar8 + 0x318d);
      goto LAB_00087f2e;
    }
    cVar7 = *(char *)(iVar8 + 0x318d);
    if (iVar9 == 0) goto LAB_00087f2e;
    local_80 = iVar9;
    if (((*(byte *)(iVar9 + 0x19c) & 2) == 0) || (*(char *)(*(int *)(param_1 + 4) + 0xac) != '\0'))
    {
      if (cVar7 != '\0') goto LAB_000887ba;
      goto LAB_00087f39;
    }
    if (cVar7 != '\0') goto LAB_000887ba;
    if ((*(byte *)(local_94 + 7) & 2) == 0) {
      (**(code **)(*local_94 + 0x38))(local_94);
      if ((*(byte *)(local_94 + 7) & 2) == 0) goto LAB_00088c5f;
    }
    if ((*(byte *)(local_8c + 7) & 2) == 0) {
      (**(code **)(*local_8c + 0x38))(local_8c);
      if ((*(byte *)(local_8c + 7) & 2) == 0) {
LAB_00088c5f:
                    /* WARNING: Subroutine does not return */
        FUN_0005f0b0(unaff_EDI + 0x1998e3,0x163,unaff_EDI + 0x19c43b,pbVar1);
      }
      if ((*(byte *)(local_94 + 7) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_0005f0b0(unaff_EDI + 0x1998e3,0xcf,unaff_EDI + 0x19c68f,local_8c);
      }
    }
    uVar14 = local_94[3] + local_8c[3];
    iVar8 = *(int *)(*(int *)pbVar1 + 8);
    if (iVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0007a620();
    }
    local_a0 = *(int *)(iVar8 + 0x521c);
    local_a4 = *(int *)(iVar8 + 0x5218);
    if (local_a0 == 0 && local_a4 == 0) {
      local_a0 = *(int *)(param_4[1] + 0x24);
      local_a4 = *(int *)(param_4[1] + 0x20);
    }
    uVar3 = *(uint *)(iVar9 + 0x164);
    uVar4 = *(uint *)(iVar9 + 0x168);
    uVar17 = uVar3 - uVar14 & -local_a4;
    uVar18 = uVar4 - (uVar3 < uVar14) & -(local_a0 + (uint)(local_a4 != 0));
    uVar11 = uVar3 - uVar17;
    uVar15 = (uVar4 - uVar18) - (uint)(uVar3 < uVar17);
    cVar7 = *(char *)(iVar8 + 0x318d);
    if (uVar15 <= uVar4 && (uint)(uVar3 < uVar11) <= uVar4 - uVar15) {
      uVar5 = *(uint *)(iVar9 + 0x160);
      uVar6 = *(uint *)(iVar9 + 0x15c);
      if (uVar15 <= uVar5 && (uint)(uVar6 < uVar11) <= uVar5 - uVar15) {
        *(uint *)(iVar9 + 0x164) = uVar17;
        *(uint *)(iVar9 + 0x15c) = (uVar6 - uVar3) + uVar17;
        *(uint *)(iVar9 + 0x160) =
             ((uVar5 - uVar4) - (uint)(uVar6 < uVar3)) + uVar18 + (uint)CARRY4(uVar6 - uVar3,uVar17)
        ;
        *(byte *)(iVar9 + 0x19c) = *(byte *)(iVar9 + 0x19c) | 2;
        *(uint *)(iVar9 + 0x168) = uVar18;
        iVar8 = uVar15 - (uVar11 < uVar14);
        if (cVar7 != '\0') goto LAB_000887ba;
        if (uVar11 - uVar14 == 0 && iVar8 == 0) goto LAB_0008878f;
        if (iVar9 == 0) goto LAB_0008878f;
        piVar12 = (int *)FUN_0017ebf0(0x2c);
        piVar12[1] = 0;
        piVar12[3] = uVar11 - uVar14;
        piVar12[2] = 0;
        piVar12[8] = 0;
        piVar12[9] = 1;
        *(byte *)(piVar12 + 7) = *(byte *)(piVar12 + 7) & 0xe0 | 10;
        piVar12[10] = 0;
        piVar12[4] = iVar8;
        piVar12[5] = -1;
        piVar12[6] = -1;
        *piVar12 = unaff_EDI + 0x2759db;
        FUN_000bee40(iVar9,piVar12);
        goto LAB_0008878f;
      }
    }
    if (cVar7 != '\0') goto LAB_00087f7a;
    local_80 = 0;
    uVar19 = local_5c;
LAB_00087f52:
    local_5c = uVar19;
    if (iVar16 != 0) goto LAB_00087f5a;
    iVar9 = *(int *)(param_1 + 4);
    if (*(char *)(iVar9 + 0xac) != '\0') goto LAB_00087f99;
LAB_00087fc3:
    iVar9 = local_88;
    local_68 = 1;
    local_5c = uVar19;
    if (*(char *)(iVar8 + 0x318d) == '\0') {
      uVar19 = FUN_00086af0(param_1,param_4,local_80,&local_68);
      iVar8 = *(int *)pbVar1;
      iVar16 = *(int *)(iVar8 + 8);
      if (iVar16 == 0) goto LAB_000888c2;
LAB_00087ff2:
      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) {
        if (local_88 == 0) {
          FUN_0007f530(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);
        }
        else {
          FUN_0007b330(*(undefined4 *)(param_1 + 0x1e8),param_1 + 0x130);
        }
        iVar8 = *(int *)pbVar1;
        iVar16 = *(int *)(iVar8 + 8);
        if (iVar16 == 0) goto LAB_000888c2;
      }
      local_5c = uVar19;
      if ((*(byte *)(iVar8 + 0x14) & 8) != 0) goto LAB_00088970;
      pcVar13 = *(code **)(*param_4 + 0x68);
      if (pcVar13 != (code *)(unaff_EDI + 0x1497)) goto LAB_000888db;
      if ((*(char *)(iVar16 + 0x3209) != '\0') &&
         (pcVar13 = *(code **)(*param_4 + 0x6c), pcVar13 != (code *)(unaff_EDI + 0x1147)))
      goto LAB_00088910;
    }
    else {
      uVar19 = FUN_0007c8c0(param_1,local_94,&local_68);
      iVar8 = *(int *)pbVar1;
      iVar16 = *(int *)(iVar8 + 8);
      if (iVar16 != 0) goto LAB_00087ff2;
LAB_000888c2:
      pcVar13 = *(code **)(*param_4 + 0x68);
      if (pcVar13 == (code *)(unaff_EDI + 0x1497)) goto LAB_00088477;
LAB_000888db:
      local_5c = uVar19;
      cVar7 = (*pcVar13)(param_4);
      if (cVar7 != '\0') {
        if ((*(int *)(*(int *)pbVar1 + 8) == 0) || ((*(byte *)(*(int *)pbVar1 + 0x14) & 8) == 0)) {
          pcVar13 = *(code **)(*param_4 + 0x6c);
          if (pcVar13 == (code *)(unaff_EDI + 0x1147)) goto LAB_00088098;
LAB_00088910:
          local_88 = local_88 + 1;
          cVar7 = (*pcVar13)(param_4,local_88,param_2,param_3,param_1,param_5);
        }
        else {
LAB_00088970:
          local_88 = local_88 + 1;
          cVar7 = local_88 < 2;
        }
        local_88 = iVar9 + 1;
        if (cVar7 != '\0') {
          FUN_0007c310(param_1);
          goto LAB_00087e80;
        }
      }
    }
LAB_00088098:
    local_88 = iVar9 + 1;
    iVar9 = FUN_00124fc0(param_3,&UNK_0019b53f + unaff_EDI,0);
    if ((iVar9 != 0) && ((*(byte *)(iVar9 + 0x2c) & 4) != 0)) {
      if (local_80 == 0) {
        FUN_00122fd0(iVar9);
      }
      else {
        FUN_00122f70(iVar9,local_80,0);
      }
    }
    uVar19 = FUN_0007cbc0(param_1,local_5c,0);
    piVar12 = *(int **)(param_1 + 0x13c);
    iVar9 = local_68;
    if (*(int **)(param_1 + 0x140) != piVar12) {
      do {
        while (piVar2 = (int *)*piVar12, piVar2[0x18] == -1) {
          if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {
            piVar2[0x18] = iVar9;
          }
          else {
            local_5c = uVar19;
            (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);
            uVar19 = local_5c;
          }
          iVar9 = iVar9 + 1;
          piVar12 = piVar12 + 1;
          if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088157;
        }
        piVar12 = piVar12 + 1;
      } while (*(int **)(param_1 + 0x140) != piVar12);
    }
LAB_00088157:
    local_68 = iVar9;
    local_5c = uVar19;
    FUN_00080c40(param_1,param_2,param_3,iVar9,local_b0,local_74);
    if (*(char *)(*(int *)pbVar1 + 0x10) != '\0') {
      if (*(char *)(*(int *)pbVar1 + 0x11) == '\0') {
        FUN_0007d770(param_1,param_2);
      }
      FUN_00115690(*(undefined4 *)(param_1 + 4),param_3,param_1);
      if (*(int *)(param_1 + 0x1d0) != 0) {
        FUN_00066ab0(*(int *)(param_1 + 0x1d0));
        FUN_00080980(param_1,param_3);
      }
      uVar10 = FUN_00081560(param_1);
      uVar19 = FUN_0007cbc0(param_1,local_5c,0);
      piVar12 = *(int **)(param_1 + 0x13c);
      iVar9 = local_68;
      if (piVar12 == *(int **)(param_1 + 0x140)) goto LAB_00088259;
      goto LAB_0008822e;
    }
LAB_00088c31:
    cVar7 = FUN_0007a5f0();
    iVar8 = extraout_ECX;
    iVar16 = local_90;
LAB_00087f2e:
    if (cVar7 == '\0') {
      local_80 = 0;
LAB_00087f39:
      if (local_8c == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
        FUN_0005f0b0(unaff_EDI + 0x19b1cf,0xb0f,unaff_EDI + 0x19c44f);
      }
      uVar19 = local_5c;
      if (local_80 == 0) goto LAB_00087f52;
LAB_0008878f:
      FUN_000bee40(local_80,local_8c);
      if (iVar16 != 0) {
LAB_00087f5a:
        FUN_000bee40(iVar16,local_8c);
        if (local_80 == 0) goto LAB_00087f7a;
      }
LAB_000887ba:
      FUN_000bee40(local_80,local_94);
      iVar8 = *(int *)(*(int *)pbVar1 + 8);
    }
    else {
LAB_00087f7a:
      local_80 = 0;
      iVar8 = *(int *)(*(int *)pbVar1 + 8);
    }
    iVar9 = *(int *)(param_1 + 4);
    uVar19 = local_5c;
    if (*(char *)(iVar9 + 0xac) == '\0') goto LAB_00088468;
LAB_00087f99:
    if (*(int *)(iVar9 + 0xbc) == 0) goto LAB_00088468;
    if (iVar8 != 0) goto code_r0x00087faf;
  }
  goto LAB_00088477;
LAB_0008822e:
  piVar2 = (int *)*piVar12;
  if (piVar2[0x18] == -1) {
    if (*(code **)(*piVar2 + 0x30) == (code *)(unaff_EDI + 0x1447)) {
      piVar2[0x18] = iVar9;
    }
    else {
      local_5c = uVar19;
      (**(code **)(*piVar2 + 0x30))(piVar2,iVar9);
      uVar19 = local_5c;
    }
    iVar9 = iVar9 + 1;
    piVar12 = piVar12 + 1;
    if (*(int **)(param_1 + 0x140) == piVar12) goto LAB_00088259;
    goto LAB_0008822e;
  }
  piVar12 = piVar12 + 1;
  if (*(int **)(param_1 + 0x140) == piVar12) {
LAB_00088259:
    local_68 = iVar9;
    local_5c = uVar19;
    FUN_0007d3e0(param_1,uVar10,local_b0);
    uVar19 = local_5c;
    if (*(char *)(param_1 + 0x1ca) == '\0') {
      uVar19 = FUN_0007cbc0(param_1,local_5c,1);
      local_5c = uVar19;
      uVar19 = FUN_0007cbc0(param_1,uVar19,2);
    }
    local_5c = uVar19;
    FUN_000ba760(local_94,*(undefined4 *)(param_1 + 0x160),uVar10);
    BYTE_ARRAY_002804b9[unaff_EDI + 0x10] = 1;
    *(undefined8 *)(param_1 + 0x1bc) = local_5c;
    return;
  }
  goto LAB_0008822e;
code_r0x00087faf:
  if (*(char *)(iVar8 + 0x318d) == '\0') {
    local_5c = uVar19;
    FUN_00109060(iVar9 + 0xac,local_94,local_8c);
    iVar8 = *(int *)(*(int *)pbVar1 + 8);
    uVar19 = local_5c;
LAB_00088468:
    local_68 = 1;
    if (iVar8 == 0) goto LAB_00088477;
  }
  goto LAB_00087fc3;
}

