
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* WARNING: Struct "Output_fill_debug_info": ignoring overlapping field "is_debug_types_" */
/* DWARF original prototype: Output_section * make_output_section(Layout * this, char * name,
   Elf_Word type, Elf_Xword flags, Output_section_order order, bool is_relro) */

Output_section * __thiscall
gold::Layout::make_output_section
          (Layout *this,char *name,Elf_Word type,Elf_Xword flags,Output_section_order order,
          bool is_relro)

{
  undefined1 *puVar1;
  _Rb_tree_header *p_Var2;
  General_options *pGVar3;
  Target *pTVar4;
  Script_options *pSVar5;
  Parameters *pPVar6;
  int iVar7;
  Output_section_order OVar8;
  undefined4 extraout_var;
  Output_fill *pOVar9;
  size_t sVar10;
  size_t sVar11;
  Output_section *pOVar12;
  Output_reduced_debug_abbrev_section *pOVar13;
  Output_reduced_debug_info_section *pOVar14;
  long lVar15;
  byte *pbVar16;
  iterator __position;
  byte *pbVar17;
  ulong uVar18;
  bool bVar19;
  bool bVar20;
  undefined1 uVar21;
  bool bVar22;
  undefined1 uVar23;
  byte bVar24;
  bool local_59;
  Output_section *os;
  
  bVar24 = 0;
  uVar18 = (ulong)order;
  if ((flags & 2) != 0) goto LAB_0037f230;
  pGVar3 = parameters->options_;
  bVar19 = false;
  bVar22 = pGVar3 == (General_options *)0x0;
  if (bVar22) goto LAB_0037f97a;
  lVar15 = 5;
  pbVar16 = (byte *)(pGVar3->compress_debug_sections_).value;
  pbVar17 = (byte *)0x57596e;
  do {
    if (lVar15 == 0) break;
    lVar15 = lVar15 + -1;
    bVar19 = *pbVar16 < *pbVar17;
    bVar22 = *pbVar16 == *pbVar17;
    pbVar16 = pbVar16 + 1;
    pbVar17 = pbVar17 + 1;
  } while (bVar22);
  bVar20 = false;
  bVar19 = (!bVar19 && !bVar22) == bVar19;
  if (bVar19) {
LAB_0037f1e5:
    bVar19 = false;
    bVar22 = (pGVar3->strip_debug_non_line_).value == false;
    if (bVar22) {
LAB_0037f230:
      bVar19 = type == 0;
      bVar22 = type == 1;
      if (bVar22) {
        lVar15 = 0xb;
        pbVar16 = (byte *)".init_array";
        pbVar17 = (byte *)name;
        do {
          if (lVar15 == 0) break;
          lVar15 = lVar15 + -1;
          bVar19 = *pbVar16 < *pbVar17;
          bVar22 = *pbVar16 == *pbVar17;
          pbVar16 = pbVar16 + 1;
          pbVar17 = pbVar17 + 1;
        } while (bVar22);
        bVar20 = false;
        bVar19 = (!bVar19 && !bVar22) == bVar19;
        if (bVar19) {
          type = 0xe;
        }
        else {
          lVar15 = 0xe;
          pbVar16 = (byte *)".preinit_array";
          pbVar17 = (byte *)name;
          do {
            if (lVar15 == 0) break;
            lVar15 = lVar15 + -1;
            bVar20 = *pbVar16 < *pbVar17;
            bVar19 = *pbVar16 == *pbVar17;
            pbVar16 = pbVar16 + 1;
            pbVar17 = pbVar17 + 1;
          } while (bVar19);
          bVar22 = false;
          bVar19 = (!bVar20 && !bVar19) == bVar20;
          if (bVar19) {
            type = 0x10;
          }
          else {
            lVar15 = 0xb;
            pbVar16 = (byte *)".fini_array";
            pbVar17 = (byte *)name;
            do {
              if (lVar15 == 0) break;
              lVar15 = lVar15 + -1;
              bVar22 = *pbVar16 < *pbVar17;
              bVar19 = *pbVar16 == *pbVar17;
              pbVar16 = pbVar16 + 1;
              pbVar17 = pbVar17 + 1;
            } while (bVar19);
            if ((!bVar22 && !bVar19) == bVar22) {
              type = 0xf;
            }
          }
        }
      }
      pTVar4 = parameters->target_;
      if (pTVar4 == (Target *)0x0) goto LAB_0037fb03;
      iVar7 = (*pTVar4->_vptr_Target[0x1b])(pTVar4,name,(ulong)type,flags);
      os = (Output_section *)CONCAT44(extraout_var,iVar7);
    }
    else {
      lVar15 = 0xe;
      pbVar16 = (byte *)".debug_abbrev";
      pbVar17 = (byte *)name;
      do {
        if (lVar15 == 0) break;
        lVar15 = lVar15 + -1;
        bVar19 = *pbVar16 < *pbVar17;
        bVar22 = *pbVar16 == *pbVar17;
        pbVar16 = pbVar16 + 1;
        pbVar17 = pbVar17 + 1;
      } while (bVar22);
      bVar20 = false;
      bVar19 = (!bVar19 && !bVar22) == bVar19;
      if (bVar19) {
        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x1a0);
                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */
        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);
        (pOVar13->super_Output_section).super_Output_data._vptr_Output_data =
             (_func_int_varargs **)&PTR__Output_reduced_debug_abbrev_section_006752b8;
        p_Var2 = &(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;
        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =
             &p_Var2->_M_header;
        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =
             &p_Var2->_M_header;
        pOVar14 = this->debug_info_;
        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.
        _M_start = (pointer)0x0;
        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.
        _M_finish = (pointer)0x0;
        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.
        _M_end_of_storage = (pointer)0x0;
        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color = _S_red;
        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent =
             (_Base_ptr)0x0;
        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count = 0;
        pOVar13->sized_ = false;
        pOVar13->abbrev_count_ = 0;
        pOVar13->failed_ = false;
        puVar1 = &(pOVar13->super_Output_section).field_0xc8;
        *puVar1 = *puVar1 | 0x30;
        this->debug_abbrev_ = pOVar13;
        os = (Output_section *)pOVar13;
        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {
          pOVar14->associated_abbrev_ = pOVar13;
        }
      }
      else {
        lVar15 = 0xc;
        pbVar16 = (byte *)".debug_info";
        pbVar17 = (byte *)name;
        do {
          if (lVar15 == 0) break;
          lVar15 = lVar15 + -1;
          bVar20 = *pbVar16 < *pbVar17;
          bVar19 = *pbVar16 == *pbVar17;
          pbVar16 = pbVar16 + 1;
          pbVar17 = pbVar17 + 1;
        } while (bVar19);
        if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f230;
        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0x170);
                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */
        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);
        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =
             (_func_int_varargs **)&PTR__Output_reduced_debug_info_section_00675370;
        pOVar13 = this->debug_abbrev_;
        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.
        _M_start = (pointer)0x0;
        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.
        _M_finish = (pointer)0x0;
        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.
        _M_end_of_storage = (pointer)0x0;
        pOVar14->failed_ = false;
        puVar1 = &(pOVar14->super_Output_section).field_0xc8;
        *puVar1 = *puVar1 | 0x30;
        this->debug_info_ = pOVar14;
        os = (Output_section *)pOVar14;
        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {
          pOVar14->associated_abbrev_ = pOVar13;
        }
      }
    }
  }
  else {
    lVar15 = 6;
    pbVar16 = &DAT_00533552;
    pbVar17 = (byte *)name;
    do {
      if (lVar15 == 0) break;
      lVar15 = lVar15 + -1;
      bVar20 = *pbVar16 < *pbVar17;
      bVar19 = *pbVar16 == *pbVar17;
      pbVar16 = pbVar16 + 1;
      pbVar17 = pbVar17 + 1;
    } while (bVar19);
    if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f1e5;
    pOVar12 = (Output_section *)operator_new(0x178);
                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */
    Output_section::Output_section(pOVar12,name,type,flags);
    (pOVar12->super_Output_data)._vptr_Output_data =
         (_func_int_varargs **)&PTR__Output_compressed_section_00675900;
    pOVar12[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)pGVar3;
    pOVar12[1].super_Output_data.data_size_ = (off_t)&pOVar12[1].super_Output_data.field_0x20;
    pOVar12[1].super_Output_data.offset_ = 0;
    pOVar12[1].super_Output_data.field_0x20 = 0;
    pOVar12->field_0xc8 = pOVar12->field_0xc8 | 0x30;
    os = pOVar12;
  }
  pOVar12 = os;
  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {
    if (parameters->options_ == (General_options *)0x0) goto LAB_0037f97a;
    local_59 = (parameters->options_->relro_).value;
    if ((local_59 == false) || (((uint)flags & 3) != 3)) goto LAB_0037f273;
    if (type == 1) {
      bVar19 = false;
      bVar22 = (flags & 0x400) == 0;
      if (!bVar22) goto LAB_0037f278;
      lVar15 = 0xd;
      pbVar16 = (byte *)name;
      pbVar17 = (byte *)".data.rel.ro";
      do {
        if (lVar15 == 0) break;
        lVar15 = lVar15 + -1;
        bVar19 = *pbVar16 < *pbVar17;
        bVar22 = *pbVar16 == *pbVar17;
        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
      } while (bVar22);
      bVar20 = false;
      bVar19 = (!bVar19 && !bVar22) == bVar19;
      if (bVar19) goto LAB_0037f278;
      lVar15 = 0x13;
      pbVar16 = (byte *)name;
      pbVar17 = (byte *)".data.rel.ro.local";
      do {
        if (lVar15 == 0) break;
        lVar15 = lVar15 + -1;
        bVar20 = *pbVar16 < *pbVar17;
        bVar19 = *pbVar16 == *pbVar17;
        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
      } while (bVar19);
      bVar22 = false;
      bVar19 = (!bVar20 && !bVar19) == bVar20;
      if (!bVar19) {
        lVar15 = 7;
        pbVar16 = (byte *)name;
        pbVar17 = (byte *)".ctors";
        do {
          if (lVar15 == 0) break;
          lVar15 = lVar15 + -1;
          bVar22 = *pbVar16 < *pbVar17;
          bVar19 = *pbVar16 == *pbVar17;
          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
        } while (bVar19);
        bVar20 = false;
        bVar19 = (!bVar22 && !bVar19) == bVar22;
        if (!bVar19) {
          lVar15 = 7;
          pbVar16 = (byte *)name;
          pbVar17 = (byte *)".dtors";
          do {
            if (lVar15 == 0) break;
            lVar15 = lVar15 + -1;
            bVar20 = *pbVar16 < *pbVar17;
            bVar19 = *pbVar16 == *pbVar17;
            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
          } while (bVar19);
          if (((!bVar20 && !bVar19) != bVar20) && (iVar7 = strcmp(name,".jcr"), iVar7 != 0))
          goto LAB_0037f273;
        }
        goto LAB_0037f278;
      }
    }
    else {
      if (2 < type - 0xe) goto LAB_0037f273;
LAB_0037f278:
      local_59 = false;
    }
    pOVar12->field_0xc9 = pOVar12->field_0xc9 | 0x20;
  }
  else {
LAB_0037f273:
    local_59 = is_relro;
    if (is_relro) goto LAB_0037f278;
  }
  if ((order == ORDER_INVALID) && ((flags & 2) != 0)) {
    OVar8 = default_section_order(this,pOVar12,local_59);
    uVar18 = (ulong)OVar8;
    pOVar12 = os;
  }
  pPVar6 = parameters;
  OVar8 = (Output_section_order)uVar18;
  pOVar12->order_ = OVar8;
  pTVar4 = pPVar6->target_;
  if (pTVar4 == (Target *)0x0) goto LAB_0037fb03;
  if (pTVar4->_vptr_Target[3] == Target::do_new_output_section) {
    __position._M_current =
         (this->section_list_).
         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.
         _M_finish;
    if (__position._M_current ==
        (this->section_list_).
        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.
        _M_end_of_storage) goto LAB_0037f938;
LAB_0037f2d9:
    *__position._M_current = os;
    (this->section_list_).
    super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.
    _M_finish = __position._M_current + 1;
  }
  else {
    (*pTVar4->_vptr_Target[3])(pTVar4,pOVar12);
    __position._M_current =
         (this->section_list_).
         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.
         _M_finish;
    if (__position._M_current !=
        (this->section_list_).
        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.
        _M_end_of_storage) goto LAB_0037f2d9;
LAB_0037f938:
    std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::
    _M_realloc_insert<gold::Output_section*_const&>(&this->section_list_,__position,&os);
  }
  pOVar12 = os;
  pSVar5 = this->script_options_;
  pGVar3 = parameters->options_;
  if ((pSVar5->script_sections_).saw_sections_clause_ == false) {
    if (pGVar3 == (General_options *)0x0) {
LAB_0037f97a:
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
    }
    bVar19 = false;
    bVar22 = (pGVar3->relocatable_).value == false;
    if (!bVar22) goto LAB_0037f347;
    lVar15 = 0xc;
    pbVar16 = (byte *)name;
    pbVar17 = (byte *)".init_array";
    do {
      if (lVar15 == 0) break;
      lVar15 = lVar15 + -1;
      bVar19 = *pbVar16 < *pbVar17;
      bVar22 = *pbVar16 == *pbVar17;
      pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
      pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
    } while (bVar22);
    bVar20 = false;
    bVar19 = (!bVar19 && !bVar22) == bVar19;
    if (bVar19) {
LAB_0037f340:
      os->field_0xc9 = os->field_0xc9 | 4;
    }
    else {
      lVar15 = 0xc;
      pbVar16 = (byte *)name;
      pbVar17 = (byte *)".fini_array";
      do {
        if (lVar15 == 0) break;
        lVar15 = lVar15 + -1;
        bVar20 = *pbVar16 < *pbVar17;
        bVar19 = *pbVar16 == *pbVar17;
        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
      } while (bVar19);
      if ((!bVar20 && !bVar19) == bVar20) goto LAB_0037f340;
      bVar19 = false;
      bVar22 = (pGVar3->ctors_in_init_array_).value == false;
      if (bVar22) {
        lVar15 = 7;
        pbVar16 = (byte *)name;
        pbVar17 = (byte *)".ctors";
        do {
          if (lVar15 == 0) break;
          lVar15 = lVar15 + -1;
          bVar19 = *pbVar16 < *pbVar17;
          bVar22 = *pbVar16 == *pbVar17;
          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
        } while (bVar22);
        bVar20 = false;
        bVar19 = (!bVar19 && !bVar22) == bVar19;
        if (!bVar19) {
          lVar15 = 7;
          pbVar16 = (byte *)name;
          pbVar17 = (byte *)".dtors";
          do {
            if (lVar15 == 0) break;
            lVar15 = lVar15 + -1;
            bVar20 = *pbVar16 < *pbVar17;
            bVar19 = *pbVar16 == *pbVar17;
            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
          } while (bVar19);
          if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f347;
        }
        goto LAB_0037f340;
      }
    }
LAB_0037f347:
    bVar19 = (pGVar3->text_reorder_).value == false;
    if (((!bVar19) && (bVar19 = (pSVar5->script_sections_).saw_sections_clause_ == false, bVar19))
       && (bVar19 = this->section_ordering_specified_ == false, bVar19)) {
      bVar22 = false;
      bVar19 = (pGVar3->relocatable_).value == false;
      if (bVar19) {
        lVar15 = 6;
        pbVar16 = (byte *)name;
        pbVar17 = (byte *)".text";
        do {
          if (lVar15 == 0) break;
          lVar15 = lVar15 + -1;
          bVar22 = *pbVar16 < *pbVar17;
          bVar19 = *pbVar16 == *pbVar17;
          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
        } while (bVar19);
        bVar19 = (!bVar22 && !bVar19) == bVar22;
        if (bVar19) {
          puVar1 = &os->field_0xc9;
          *puVar1 = *puVar1 | 4;
          bVar19 = *puVar1 == '\0';
        }
      }
    }
  }
  else {
    bVar19 = pGVar3 == (General_options *)0x0;
    if (bVar19) goto LAB_0037f97a;
  }
  bVar22 = false;
  lVar15 = 5;
  pbVar16 = (byte *)(pGVar3->sort_section_).value;
  pbVar17 = (byte *)0x575186;
  do {
    if (lVar15 == 0) break;
    lVar15 = lVar15 + -1;
    bVar22 = *pbVar16 < *pbVar17;
    bVar19 = *pbVar16 == *pbVar17;
    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
    pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
  } while (bVar19);
  if ((!bVar22 && !bVar19) == bVar22) {
    os->field_0xc9 = os->field_0xc9 | 8;
  }
  if (type == 3) {
    bVar19 = false;
    bVar22 = this->have_stabstr_section_ == false;
    if (bVar22) {
      lVar15 = 5;
      pbVar16 = (byte *)name;
      pbVar17 = (byte *)".stab";
      do {
        if (lVar15 == 0) break;
        lVar15 = lVar15 + -1;
        bVar19 = *pbVar16 < *pbVar17;
        bVar22 = *pbVar16 == *pbVar17;
        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
      } while (bVar22);
      uVar21 = 0;
      uVar23 = (!bVar19 && !bVar22) == bVar19;
      if ((bool)uVar23) {
        sVar11 = strlen(name);
        lVar15 = 4;
        pbVar16 = (byte *)(name + (sVar11 - 3));
        pbVar17 = (byte *)0x579a2e;
        do {
          if (lVar15 == 0) break;
          lVar15 = lVar15 + -1;
          uVar21 = *pbVar16 < *pbVar17;
          uVar23 = *pbVar16 == *pbVar17;
          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
        } while ((bool)uVar23);
        if ((!(bool)uVar21 && !(bool)uVar23) == (bool)uVar21) {
          this->have_stabstr_section_ = true;
        }
      }
    }
  }
  else if ((type == 1) || (type == 8)) {
    bVar19 = OVar8 < ORDER_NON_RELRO_FIRST;
    bVar22 = OVar8 == ORDER_NON_RELRO_FIRST;
    if ((ORDER_NON_RELRO_FIRST < OVar8) ||
       (bVar19 = (0x3020c2UL >> (uVar18 & 0x3f) & 1) != 0, !bVar19)) {
      lVar15 = 10;
      pbVar16 = (byte *)name;
      pbVar17 = (byte *)".eh_frame";
      do {
        if (lVar15 == 0) break;
        lVar15 = lVar15 + -1;
        bVar19 = *pbVar16 < *pbVar17;
        bVar22 = *pbVar16 == *pbVar17;
        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
      } while (bVar22);
      bVar20 = false;
      bVar19 = (!bVar19 && !bVar22) == bVar19;
      if (!bVar19) {
        lVar15 = 7;
        pbVar16 = (byte *)name;
        pbVar17 = (byte *)".ctors";
        do {
          if (lVar15 == 0) break;
          lVar15 = lVar15 + -1;
          bVar20 = *pbVar16 < *pbVar17;
          bVar19 = *pbVar16 == *pbVar17;
          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
        } while (bVar19);
        bVar22 = false;
        bVar19 = (!bVar20 && !bVar19) == bVar20;
        if (!bVar19) {
          lVar15 = 7;
          pbVar16 = (byte *)name;
          pbVar17 = (byte *)".dtors";
          do {
            if (lVar15 == 0) break;
            lVar15 = lVar15 + -1;
            bVar22 = *pbVar16 < *pbVar17;
            bVar19 = *pbVar16 == *pbVar17;
            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
          } while (bVar19);
          bVar20 = false;
          bVar19 = (!bVar22 && !bVar19) == bVar22;
          if (!bVar19) {
            lVar15 = 5;
            pbVar16 = (byte *)name;
            pbVar17 = &DAT_005710ea;
            do {
              if (lVar15 == 0) break;
              lVar15 = lVar15 + -1;
              bVar20 = *pbVar16 < *pbVar17;
              bVar19 = *pbVar16 == *pbVar17;
              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
            } while (bVar19);
            if ((!bVar20 && !bVar19) != bVar20) {
              puVar1 = &os->field_0xca;
              bVar19 = false;
              *puVar1 = *puVar1 | 0x40;
              bVar22 = *puVar1 == '\0';
              lVar15 = 0xc;
              pbVar16 = (byte *)name;
              pbVar17 = (byte *)".debug_info";
              do {
                if (lVar15 == 0) break;
                lVar15 = lVar15 + -1;
                bVar19 = *pbVar16 < *pbVar17;
                bVar22 = *pbVar16 == *pbVar17;
                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
              } while (bVar22);
              bVar20 = false;
              bVar19 = (!bVar19 && !bVar22) == bVar19;
              if (bVar19) {
                pOVar9 = (Output_fill *)operator_new(0x10);
                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (_func_int_varargs **)&DAT_00672c10;
                if (parameters->target_ == (Target *)0x0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */
                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");
                }
                bVar19 = parameters->target_->pti_->is_big_endian;
                pOVar9->field_0x9 = 0;
                pOVar9->is_big_endian_ = bVar19;
                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;
              }
              else {
                lVar15 = 0xd;
                pbVar16 = (byte *)name;
                pbVar17 = (byte *)".debug_types";
                do {
                  if (lVar15 == 0) break;
                  lVar15 = lVar15 + -1;
                  bVar20 = *pbVar16 < *pbVar17;
                  bVar19 = *pbVar16 == *pbVar17;
                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
                } while (bVar19);
                bVar22 = false;
                bVar19 = (!bVar20 && !bVar19) == bVar20;
                if (!bVar19) {
                  lVar15 = 0xc;
                  pbVar16 = (byte *)".debug_line";
                  do {
                    if (lVar15 == 0) break;
                    lVar15 = lVar15 + -1;
                    bVar22 = (byte)*name < *pbVar16;
                    bVar19 = *name == *pbVar16;
                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);
                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;
                  } while (bVar19);
                  if ((!bVar22 && !bVar19) == bVar22) {
                    pOVar9 = (Output_fill *)operator_new(0x10);
                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                         (_func_int_varargs **)&DAT_00672c10;
                    if (parameters->target_ == (Target *)0x0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */
                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");
                    }
                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;
                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;
                    pOVar12->free_space_fill_ = pOVar9;
                    sVar10 = Output_fill_debug_line::do_minimum_hole_size
                                       ((Output_fill_debug_line *)pOVar9);
                    (pOVar12->free_list_).min_hole_ = sVar10;
                    pOVar12 = os;
                  }
                  goto LAB_0037f3c1;
                }
                pOVar9 = (Output_fill *)operator_new(0x10);
                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (_func_int_varargs **)&DAT_00672c10;
                if (parameters->target_ == (Target *)0x0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */
                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");
                }
                bVar19 = parameters->target_->pti_->is_big_endian;
                pOVar9->field_0x9 = 1;
                pOVar9->is_big_endian_ = bVar19;
                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;
              }
              pOVar12->free_space_fill_ = pOVar9;
              sVar10 = Output_fill_debug_info::do_minimum_hole_size
                                 ((Output_fill_debug_info *)pOVar9);
              (pOVar12->free_list_).min_hole_ = sVar10;
              pOVar12 = os;
            }
          }
        }
      }
    }
  }
LAB_0037f3c1:
  if (this->sections_are_attached_ != false) {
    if (parameters->target_ == (Target *)0x0) {
LAB_0037fb03:
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/parameters.h",0x69,"target");
    }
    attach_section_to_segment(this,parameters->target_,pOVar12);
    pOVar12 = os;
  }
  return pOVar12;
}



undefined8 *
FUN_0037f160(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)

{
  long *plVar1;
  undefined *puVar2;
  uint uVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  size_t sVar7;
  undefined8 *puVar8;
  long lVar9;
  long lVar10;
  long lVar11;
  byte *pbVar12;
  byte *pbVar13;
  ulong uVar14;
  bool bVar15;
  bool bVar16;
  undefined1 uVar17;
  bool bVar18;
  undefined1 uVar19;
  byte bVar20;
  char local_59;
  undefined8 *local_40 [2];
  
  bVar20 = 0;
  uVar14 = param_5 & 0xffffffff;
  if ((param_4 & 2) != 0) goto LAB_0037f230;
  lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10);
  bVar15 = false;
  bVar18 = lVar10 == 0;
  if (bVar18) goto LAB_0037f97a;
  lVar9 = 5;
  pbVar12 = *(byte **)(lVar10 + 0xf80);
  pbVar13 = (byte *)0x57596e;
  do {
    if (lVar9 == 0) break;
    lVar9 = lVar9 + -1;
    bVar15 = *pbVar12 < *pbVar13;
    bVar18 = *pbVar12 == *pbVar13;
    pbVar12 = pbVar12 + 1;
    pbVar13 = pbVar13 + 1;
  } while (bVar18);
  bVar16 = false;
  bVar15 = (!bVar15 && !bVar18) == bVar15;
  if (bVar15) {
LAB_0037f1e5:
    bVar15 = false;
    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';
    if (bVar18) {
LAB_0037f230:
      bVar15 = param_3 == 0;
      bVar18 = param_3 == 1;
      if (bVar18) {
        lVar10 = 0xb;
        pbVar12 = (byte *)".init_array";
        pbVar13 = param_2;
        do {
          if (lVar10 == 0) break;
          lVar10 = lVar10 + -1;
          bVar15 = *pbVar12 < *pbVar13;
          bVar18 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + 1;
          pbVar13 = pbVar13 + 1;
        } while (bVar18);
        bVar16 = false;
        bVar15 = (!bVar15 && !bVar18) == bVar15;
        if (bVar15) {
          param_3 = 0xe;
        }
        else {
          lVar10 = 0xe;
          pbVar12 = (byte *)".preinit_array";
          pbVar13 = param_2;
          do {
            if (lVar10 == 0) break;
            lVar10 = lVar10 + -1;
            bVar16 = *pbVar12 < *pbVar13;
            bVar15 = *pbVar12 == *pbVar13;
            pbVar12 = pbVar12 + 1;
            pbVar13 = pbVar13 + 1;
          } while (bVar15);
          bVar18 = false;
          bVar15 = (!bVar16 && !bVar15) == bVar16;
          if (bVar15) {
            param_3 = 0x10;
          }
          else {
            lVar10 = 0xb;
            pbVar12 = (byte *)".fini_array";
            pbVar13 = param_2;
            do {
              if (lVar10 == 0) break;
              lVar10 = lVar10 + -1;
              bVar18 = *pbVar12 < *pbVar13;
              bVar15 = *pbVar12 == *pbVar13;
              pbVar12 = pbVar12 + 1;
              pbVar13 = pbVar13 + 1;
            } while (bVar15);
            if ((!bVar18 && !bVar15) == bVar18) {
              param_3 = 0xf;
            }
          }
        }
      }
      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);
      if (plVar1 == (long *)0x0) goto LAB_0037fb03;
      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);
    }
    else {
      lVar10 = 0xe;
      pbVar12 = (byte *)".debug_abbrev";
      pbVar13 = param_2;
      do {
        if (lVar10 == 0) break;
        lVar10 = lVar10 + -1;
        bVar15 = *pbVar12 < *pbVar13;
        bVar18 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + 1;
        pbVar13 = pbVar13 + 1;
      } while (bVar18);
      bVar16 = false;
      bVar15 = (!bVar15 && !bVar18) == bVar15;
      if (bVar15) {
        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);
                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */
        FUN_003c9d20(puVar8,param_2,param_3,param_4);
        *puVar8 = &PTR_FUN_006752b8;
        puVar8[0x2f] = puVar8 + 0x2d;
        puVar8[0x30] = puVar8 + 0x2d;
        lVar10 = *(long *)(param_1 + 0x340);
        puVar8[0x29] = 0;
        puVar8[0x2a] = 0;
        puVar8[0x2b] = 0;
        *(undefined4 *)(puVar8 + 0x2d) = 0;
        puVar8[0x2e] = 0;
        puVar8[0x31] = 0;
        *(undefined1 *)(puVar8 + 0x32) = 0;
        *(undefined4 *)((long)puVar8 + 0x194) = 0;
        *(undefined1 *)(puVar8 + 0x33) = 0;
        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;
        *(undefined8 **)(param_1 + 0x338) = puVar8;
        local_40[0] = puVar8;
        if (lVar10 != 0) {
          *(undefined8 **)(lVar10 + 0x160) = puVar8;
        }
      }
      else {
        lVar10 = 0xc;
        pbVar12 = (byte *)".debug_info";
        pbVar13 = param_2;
        do {
          if (lVar10 == 0) break;
          lVar10 = lVar10 + -1;
          bVar16 = *pbVar12 < *pbVar13;
          bVar15 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + 1;
          pbVar13 = pbVar13 + 1;
        } while (bVar15);
        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;
        puVar8 = (undefined8 *)FUN_0049cb70(0x170);
                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */
        FUN_003c9d20(puVar8,param_2,param_3,param_4);
        *puVar8 = &PTR_FUN_00675370;
        lVar10 = *(long *)(param_1 + 0x338);
        puVar8[0x29] = 0;
        puVar8[0x2a] = 0;
        puVar8[0x2b] = 0;
        *(undefined1 *)(puVar8 + 0x2d) = 0;
        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;
        *(undefined8 **)(param_1 + 0x340) = puVar8;
        local_40[0] = puVar8;
        if (lVar10 != 0) {
          puVar8[0x2c] = lVar10;
        }
      }
    }
  }
  else {
    lVar9 = 6;
    pbVar12 = &DAT_00533552;
    pbVar13 = param_2;
    do {
      if (lVar9 == 0) break;
      lVar9 = lVar9 + -1;
      bVar16 = *pbVar12 < *pbVar13;
      bVar15 = *pbVar12 == *pbVar13;
      pbVar12 = pbVar12 + 1;
      pbVar13 = pbVar13 + 1;
    } while (bVar15);
    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;
    puVar8 = (undefined8 *)FUN_0049cb70(0x178);
                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */
    FUN_003c9d20(puVar8,param_2,param_3,param_4);
    *puVar8 = &PTR_FUN_00675900;
    puVar8[0x29] = lVar10;
    puVar8[0x2b] = puVar8 + 0x2d;
    puVar8[0x2c] = 0;
    *(undefined1 *)(puVar8 + 0x2d) = 0;
    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;
    local_40[0] = puVar8;
  }
  puVar8 = local_40[0];
  if (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') {
    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;
    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);
    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;
    if (param_3 == 1) {
      bVar15 = false;
      bVar18 = (param_4 & 0x400) == 0;
      if (!bVar18) goto LAB_0037f278;
      lVar10 = 0xd;
      pbVar12 = param_2;
      pbVar13 = (byte *)".data.rel.ro";
      do {
        if (lVar10 == 0) break;
        lVar10 = lVar10 + -1;
        bVar15 = *pbVar12 < *pbVar13;
        bVar18 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
      } while (bVar18);
      bVar16 = false;
      bVar15 = (!bVar15 && !bVar18) == bVar15;
      if (bVar15) goto LAB_0037f278;
      lVar10 = 0x13;
      pbVar12 = param_2;
      pbVar13 = (byte *)".data.rel.ro.local";
      do {
        if (lVar10 == 0) break;
        lVar10 = lVar10 + -1;
        bVar16 = *pbVar12 < *pbVar13;
        bVar15 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
      } while (bVar15);
      bVar18 = false;
      bVar15 = (!bVar16 && !bVar15) == bVar16;
      if (!bVar15) {
        lVar10 = 7;
        pbVar12 = param_2;
        pbVar13 = (byte *)".ctors";
        do {
          if (lVar10 == 0) break;
          lVar10 = lVar10 + -1;
          bVar18 = *pbVar12 < *pbVar13;
          bVar15 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
        } while (bVar15);
        bVar16 = false;
        bVar15 = (!bVar18 && !bVar15) == bVar18;
        if (!bVar15) {
          lVar10 = 7;
          pbVar12 = param_2;
          pbVar13 = (byte *)".dtors";
          do {
            if (lVar10 == 0) break;
            lVar10 = lVar10 + -1;
            bVar16 = *pbVar12 < *pbVar13;
            bVar15 = *pbVar12 == *pbVar13;
            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
          } while (bVar15);
          if (((!bVar16 && !bVar15) != bVar16) &&
             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;
        }
        goto LAB_0037f278;
      }
    }
    else {
      if (2 < param_3 - 0xeU) goto LAB_0037f273;
LAB_0037f278:
      local_59 = '\0';
    }
    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;
  }
  else {
LAB_0037f273:
    local_59 = param_6;
    if (param_6 != '\0') goto LAB_0037f278;
  }
  if (((int)param_5 == 0) && ((param_4 & 2) != 0)) {
    uVar3 = FUN_0037b280(param_1,puVar8,local_59);
    uVar14 = (ulong)uVar3;
    puVar8 = local_40[0];
  }
  puVar2 = PTR_DAT_0067cb08;
  uVar3 = (uint)uVar14;
  *(uint *)(puVar8 + 0xf) = uVar3;
  plVar1 = *(long **)(puVar2 + 0x18);
  if (plVar1 == (long *)0x0) goto LAB_0037fb03;
  if (*(code **)(*plVar1 + 0x18) == FUN_001a49c0) {
    puVar8 = *(undefined8 **)(param_1 + 0x250);
    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;
LAB_0037f2d9:
    *puVar8 = local_40[0];
    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;
  }
  else {
    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);
    puVar8 = *(undefined8 **)(param_1 + 0x250);
    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;
LAB_0037f938:
    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);
  }
  puVar8 = local_40[0];
  lVar10 = *(long *)(param_1 + 8);
  lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10);
  if (*(char *)(lVar10 + 0x148) == '\0') {
    if (lVar9 == 0) {
LAB_0037f97a:
                    /* WARNING: Subroutine does not return */
      FUN_00352af0("../../gold/parameters.h",0x5c,"options");
    }
    bVar15 = false;
    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';
    if (!bVar18) goto LAB_0037f347;
    lVar11 = 0xc;
    pbVar12 = param_2;
    pbVar13 = (byte *)".init_array";
    do {
      if (lVar11 == 0) break;
      lVar11 = lVar11 + -1;
      bVar15 = *pbVar12 < *pbVar13;
      bVar18 = *pbVar12 == *pbVar13;
      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
    } while (bVar18);
    bVar16 = false;
    bVar15 = (!bVar15 && !bVar18) == bVar15;
    if (bVar15) {
LAB_0037f340:
      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;
    }
    else {
      lVar11 = 0xc;
      pbVar12 = param_2;
      pbVar13 = (byte *)".fini_array";
      do {
        if (lVar11 == 0) break;
        lVar11 = lVar11 + -1;
        bVar16 = *pbVar12 < *pbVar13;
        bVar15 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
      } while (bVar15);
      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;
      bVar15 = false;
      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';
      if (bVar18) {
        lVar11 = 7;
        pbVar12 = param_2;
        pbVar13 = (byte *)".ctors";
        do {
          if (lVar11 == 0) break;
          lVar11 = lVar11 + -1;
          bVar15 = *pbVar12 < *pbVar13;
          bVar18 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
        } while (bVar18);
        bVar16 = false;
        bVar15 = (!bVar15 && !bVar18) == bVar15;
        if (!bVar15) {
          lVar11 = 7;
          pbVar12 = param_2;
          pbVar13 = (byte *)".dtors";
          do {
            if (lVar11 == 0) break;
            lVar11 = lVar11 + -1;
            bVar16 = *pbVar12 < *pbVar13;
            bVar15 = *pbVar12 == *pbVar13;
            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
          } while (bVar15);
          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;
        }
        goto LAB_0037f340;
      }
    }
LAB_0037f347:
    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';
    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&
       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {
      bVar18 = false;
      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';
      if (bVar15) {
        lVar10 = 6;
        pbVar12 = param_2;
        pbVar13 = (byte *)".text";
        do {
          if (lVar10 == 0) break;
          lVar10 = lVar10 + -1;
          bVar18 = *pbVar12 < *pbVar13;
          bVar15 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
        } while (bVar15);
        bVar15 = (!bVar18 && !bVar15) == bVar18;
        if (bVar15) {
          pbVar12 = (byte *)((long)local_40[0] + 0xc9);
          *pbVar12 = *pbVar12 | 4;
          bVar15 = *pbVar12 == 0;
        }
      }
    }
  }
  else {
    bVar15 = lVar9 == 0;
    if (bVar15) goto LAB_0037f97a;
  }
  bVar18 = false;
  lVar10 = 5;
  pbVar12 = *(byte **)(lVar9 + 0x5b00);
  pbVar13 = (byte *)0x575186;
  do {
    if (lVar10 == 0) break;
    lVar10 = lVar10 + -1;
    bVar18 = *pbVar12 < *pbVar13;
    bVar15 = *pbVar12 == *pbVar13;
    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
  } while (bVar15);
  if ((!bVar18 && !bVar15) == bVar18) {
    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;
  }
  if (param_3 == 3) {
    bVar15 = false;
    bVar18 = *(char *)(param_1 + 0x370) == '\0';
    if (bVar18) {
      lVar10 = 5;
      pbVar12 = param_2;
      pbVar13 = (byte *)".stab";
      do {
        if (lVar10 == 0) break;
        lVar10 = lVar10 + -1;
        bVar15 = *pbVar12 < *pbVar13;
        bVar18 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
      } while (bVar18);
      uVar17 = 0;
      uVar19 = (!bVar15 && !bVar18) == bVar15;
      if ((bool)uVar19) {
        sVar7 = strlen((char *)param_2);
        lVar10 = 4;
        pbVar12 = param_2 + (sVar7 - 3);
        pbVar13 = (byte *)0x579a2e;
        do {
          if (lVar10 == 0) break;
          lVar10 = lVar10 + -1;
          uVar17 = *pbVar12 < *pbVar13;
          uVar19 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
        } while ((bool)uVar19);
        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {
          *(undefined1 *)(param_1 + 0x370) = 1;
        }
      }
    }
  }
  else if ((param_3 == 1) || (param_3 == 8)) {
    bVar15 = uVar3 < 0x15;
    bVar18 = uVar3 == 0x15;
    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {
      lVar10 = 10;
      pbVar12 = param_2;
      pbVar13 = (byte *)".eh_frame";
      do {
        if (lVar10 == 0) break;
        lVar10 = lVar10 + -1;
        bVar15 = *pbVar12 < *pbVar13;
        bVar18 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
      } while (bVar18);
      bVar16 = false;
      bVar15 = (!bVar15 && !bVar18) == bVar15;
      if (!bVar15) {
        lVar10 = 7;
        pbVar12 = param_2;
        pbVar13 = (byte *)".ctors";
        do {
          if (lVar10 == 0) break;
          lVar10 = lVar10 + -1;
          bVar16 = *pbVar12 < *pbVar13;
          bVar15 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
        } while (bVar15);
        bVar18 = false;
        bVar15 = (!bVar16 && !bVar15) == bVar16;
        if (!bVar15) {
          lVar10 = 7;
          pbVar12 = param_2;
          pbVar13 = (byte *)".dtors";
          do {
            if (lVar10 == 0) break;
            lVar10 = lVar10 + -1;
            bVar18 = *pbVar12 < *pbVar13;
            bVar15 = *pbVar12 == *pbVar13;
            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
          } while (bVar15);
          bVar16 = false;
          bVar15 = (!bVar18 && !bVar15) == bVar18;
          if (!bVar15) {
            lVar10 = 5;
            pbVar12 = param_2;
            pbVar13 = &DAT_005710ea;
            do {
              if (lVar10 == 0) break;
              lVar10 = lVar10 + -1;
              bVar16 = *pbVar12 < *pbVar13;
              bVar15 = *pbVar12 == *pbVar13;
              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
            } while (bVar15);
            if ((!bVar16 && !bVar15) != bVar16) {
              pbVar12 = (byte *)((long)local_40[0] + 0xca);
              bVar15 = false;
              *pbVar12 = *pbVar12 | 0x40;
              bVar18 = *pbVar12 == 0;
              lVar10 = 0xc;
              pbVar12 = param_2;
              pbVar13 = (byte *)".debug_info";
              do {
                if (lVar10 == 0) break;
                lVar10 = lVar10 + -1;
                bVar15 = *pbVar12 < *pbVar13;
                bVar18 = *pbVar12 == *pbVar13;
                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
              } while (bVar18);
              bVar16 = false;
              bVar15 = (!bVar15 && !bVar18) == bVar15;
              if (bVar15) {
                puVar5 = (undefined8 *)FUN_0049cb70(0x10);
                *puVar5 = &DAT_00672c10;
                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */
                  FUN_00352af0("../../gold/parameters.h",0x69,"target");
                }
                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);
                *(undefined1 *)((long)puVar5 + 9) = 0;
                *(undefined1 *)(puVar5 + 1) = uVar17;
                *puVar5 = &PTR_FUN_00657840;
              }
              else {
                lVar10 = 0xd;
                pbVar12 = param_2;
                pbVar13 = (byte *)".debug_types";
                do {
                  if (lVar10 == 0) break;
                  lVar10 = lVar10 + -1;
                  bVar16 = *pbVar12 < *pbVar13;
                  bVar15 = *pbVar12 == *pbVar13;
                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
                } while (bVar15);
                bVar18 = false;
                bVar15 = (!bVar16 && !bVar15) == bVar16;
                if (!bVar15) {
                  lVar10 = 0xc;
                  pbVar12 = (byte *)".debug_line";
                  do {
                    if (lVar10 == 0) break;
                    lVar10 = lVar10 + -1;
                    bVar18 = *param_2 < *pbVar12;
                    bVar15 = *param_2 == *pbVar12;
                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;
                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
                  } while (bVar15);
                  if ((!bVar18 && !bVar15) == bVar18) {
                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);
                    *puVar5 = &DAT_00672c10;
                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */
                      FUN_00352af0("../../gold/parameters.h",0x69,"target");
                    }
                    *(undefined1 *)(puVar5 + 1) =
                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);
                    *puVar5 = &PTR_FUN_00657870;
                    puVar8[0x26] = puVar5;
                    uVar6 = FUN_003c8700(puVar5);
                    puVar8[0x25] = uVar6;
                    puVar8 = local_40[0];
                  }
                  goto LAB_0037f3c1;
                }
                puVar5 = (undefined8 *)FUN_0049cb70(0x10);
                *puVar5 = &DAT_00672c10;
                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */
                  FUN_00352af0("../../gold/parameters.h",0x69,"target");
                }
                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);
                *(undefined1 *)((long)puVar5 + 9) = 1;
                *(undefined1 *)(puVar5 + 1) = uVar17;
                *puVar5 = &PTR_FUN_00657840;
              }
              puVar8[0x26] = puVar5;
              uVar6 = FUN_003c86f0(puVar5);
              puVar8[0x25] = uVar6;
              puVar8 = local_40[0];
            }
          }
        }
      }
    }
  }
LAB_0037f3c1:
  if (*(char *)(param_1 + 0x369) != '\0') {
    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {
LAB_0037fb03:
                    /* WARNING: Subroutine does not return */
      FUN_00352af0("../../gold/parameters.h",0x69,"target");
    }
    FUN_0037f0b0(param_1);
    puVar8 = local_40[0];
  }
  return puVar8;
}


PUSH R15
PUSH R14
MOV R14D,R9D
PUSH R13
MOV R13D,R8D
PUSH R12
MOV R12,RSI
PUSH RBP
MOV EBP,EDX
PUSH RBX
MOV RBX,RDI
SUB RSP,0x38
MOV RAX,qword ptr [0x0067cb08]
MOV qword ptr [RSP],RCX
AND ECX,0x2
MOV byte ptr [RSP + 0xf],R9B
MOV qword ptr [RSP + 0x10],RCX
JNZ 0x0037f230
MOV R15,qword ptr [RAX + 0x10]
TEST R15,R15
JZ 0x0037f97a
MOV RSI,qword ptr [R15 + 0xf80]
MOV ECX,0x5
LEA RDI,[0x57596e]
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x0037f1e5
MOV ECX,0x6
LEA RSI,[0x533552]
MOV RDI,R12
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x0037f750
CMP byte ptr [R15 + 0x5689],0x0
JZ 0x0037f230
MOV ECX,0xe
LEA RSI,[0x5710ba]
MOV RDI,R12
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x0037f7c0
MOV ECX,0xc
LEA RSI,[0x56e7f5]
MOV RDI,R12
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x0037f890
NOP dword ptr [RAX]
CMP EBP,0x1
JZ 0x0037f630
MOV RDI,qword ptr [RAX + 0x18]
TEST RDI,RDI
JZ 0x0037fb03
MOV RAX,qword ptr [RDI]
MOV RCX,qword ptr [RSP]
MOV EDX,EBP
MOV RSI,R12
CALL qword ptr [RAX + 0xd8]
MOV qword ptr [RSP + 0x28],RAX
MOV RAX,qword ptr [RBX + 0x8]
CMP byte ptr [RAX + 0x148],0x0
JZ 0x0037f400
MOV R15,qword ptr [RSP + 0x28]
TEST R14B,R14B
JZ 0x0037f285
MOV byte ptr [RSP + 0xf],0x0
OR byte ptr [R15 + 0xc9],0x20
TEST R13D,R13D
JNZ 0x0037f296
CMP qword ptr [RSP + 0x10],0x0
JNZ 0x0037f950
MOV RAX,qword ptr [0x0067cb08]
MOV dword ptr [R15 + 0x78],R13D
MOV RDI,qword ptr [RAX + 0x18]
TEST RDI,RDI
JZ 0x0037fb03
MOV RAX,qword ptr [RDI]
LEA RDX,[0x1a49c0]
MOV RAX,qword ptr [RAX + 0x18]
CMP RAX,RDX
JNZ 0x0037f918
MOV RSI,qword ptr [RBX + 0x250]
CMP RSI,qword ptr [RBX + 0x258]
JZ 0x0037f938
MOV RAX,qword ptr [RSP + 0x28]
ADD RSI,0x8
MOV qword ptr [RSI + -0x8],RAX
MOV qword ptr [RBX + 0x250],RSI
MOV R8,qword ptr [RBX + 0x8]
MOV RAX,qword ptr [0x0067cb08]
CMP byte ptr [R8 + 0x148],0x0
MOV RAX,qword ptr [RAX + 0x10]
JNZ 0x0037f5a8
TEST RAX,RAX
JZ 0x0037f97a
CMP byte ptr [RAX + 0x5051],0x0
MOV RDX,qword ptr [RSP + 0x28]
JNZ 0x0037f347
MOV ECX,0xc
LEA RDI,[0x57102e]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA CL
SBB CL,0x0
TEST CL,CL
JNZ 0x0037f6a0
OR byte ptr [RDX + 0xc9],0x4
CMP byte ptr [RAX + 0x62b9],0x0
JZ 0x0037f370
CMP byte ptr [R8 + 0x148],0x0
JNZ 0x0037f370
CMP byte ptr [RBX + 0x371],0x0
JZ 0x0037f710
NOP word ptr [RAX + RAX*0x1]
MOV RSI,qword ptr [RAX + 0x5b00]
MOV ECX,0x5
LEA RDI,[0x575186]
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x0037f395
OR byte ptr [RDX + 0xc9],0x8
CMP EBP,0x3
JZ 0x0037f5c0
CMP EBP,0x1
JZ 0x0037f3a8
CMP EBP,0x8
JNZ 0x0037f3c1
CMP R13D,0x15
JA 0x0037f458
MOV EAX,0x3020c2
BT RAX,R13
JNC 0x0037f458
CMP byte ptr [RBX + 0x369],0x0
JZ 0x0037f3eb
MOV RAX,qword ptr [0x0067cb08]
MOV RSI,qword ptr [RAX + 0x18]
TEST RSI,RSI
JZ 0x0037fb03
MOV RDI,RBX
CALL 0x0037f0b0
MOV RDX,qword ptr [RSP + 0x28]
ADD RSP,0x38
MOV RAX,RDX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,qword ptr [0x0067cb08]
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JZ 0x0037f97a
MOVZX EAX,byte ptr [RAX + 0x8c59]
MOV R15,qword ptr [RSP + 0x28]
TEST AL,AL
JZ 0x0037f273
MOV RDX,qword ptr [RSP]
AND EDX,0x3
CMP RDX,0x3
JNZ 0x0037f273
CMP EBP,0x1
JZ 0x0037f998
LEA EAX,[RBP + -0xe]
CMP EAX,0x2
JBE 0x0037f278
JMP 0x0037f273
MOV ECX,0xa
LEA RDI,[0x535ecf]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0037f3c1
MOV ECX,0x7
LEA RDI,[0x571027]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0037f3c1
MOV ECX,0x7
LEA RDI,[0x571046]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0037f3c1
MOV ECX,0x5
LEA RDI,[0x5710ea]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0037f3c1
OR byte ptr [RDX + 0xca],0x40
MOV ECX,0xc
LEA RDI,[0x56e7f5]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0037fa41
MOV ECX,0xd
LEA RDI,[0x56e801]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0037fab7
MOV ECX,0xc
LEA RDI,[0x5710ef]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x0037f3c1
MOV EDI,0x10
MOV qword ptr [RSP],RDX
CALL 0x0049cb70
MOV RDX,qword ptr [RSP]
MOV RBP,RAX
LEA RAX,[0x672c10]
MOV qword ptr [RBP],RAX
MOV RAX,qword ptr [0x0067cb08]
MOV RAX,qword ptr [RAX + 0x18]
TEST RAX,RAX
JZ 0x0037fb33
MOV RAX,qword ptr [RAX + 0x8]
MOV RDI,RBP
MOV qword ptr [RSP],RDX
MOVZX EAX,byte ptr [RAX + 0x4]
MOV byte ptr [RBP + 0x8],AL
LEA RAX,[0x657870]
MOV qword ptr [RBP],RAX
MOV qword ptr [RDX + 0x130],RBP
CALL 0x003c8700
MOV RDX,qword ptr [RSP]
MOV qword ptr [RDX + 0x128],RAX
MOV RDX,qword ptr [RSP + 0x28]
JMP 0x0037f3c1
TEST RAX,RAX
JZ 0x0037f97a
MOV RDX,qword ptr [RSP + 0x28]
JMP 0x0037f370
CMP byte ptr [RBX + 0x370],0x0
JNZ 0x0037f3c1
MOV ECX,0x5
LEA RDI,[0x533579]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x0037f3c1
MOV RDI,R12
MOV qword ptr [RSP],RDX
CALL 0x00177490
MOV ECX,0x4
LEA RDI,[0x579a2e]
MOV RDX,qword ptr [RSP]
LEA RSI,[R12 + RAX*0x1 + -0x3]
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x0037f3c1
MOV byte ptr [RBX + 0x370],0x1
JMP 0x0037f3c1
MOV ECX,0xb
LEA RSI,[0x57102e]
MOV RDI,R12
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x0037f690
MOV ECX,0xe
LEA RSI,[0x5710c8]
MOV RDI,R12
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x0037f970
MOV ECX,0xb
LEA RSI,[0x57103a]
MOV RDI,R12
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST DL,DL
MOV EDX,0xf
CMOVZ EBP,EDX
JMP 0x0037f239
MOV EBP,0xe
JMP 0x0037f239
MOV ECX,0xc
LEA RDI,[0x57103a]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x0037f340
CMP byte ptr [RAX + 0x1179],0x0
JNZ 0x0037f347
MOV ECX,0x7
LEA RDI,[0x571027]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x0037f340
MOV ECX,0x7
LEA RDI,[0x571046]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA CL
SBB CL,0x0
TEST CL,CL
JNZ 0x0037f347
JMP 0x0037f340
CMP byte ptr [RAX + 0x5051],0x0
JNZ 0x0037f370
MOV ECX,0x6
LEA RDI,[0x5335c9]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA CL
SBB CL,0x0
TEST CL,CL
JNZ 0x0037f370
OR byte ptr [RDX + 0xc9],0x4
JMP 0x0037f370
MOV EDI,0x178
CALL 0x0049cb70
MOV RCX,qword ptr [RSP]
MOV EDX,EBP
MOV RSI,R12
MOV RDI,RAX
MOV qword ptr [RSP + 0x18],RAX
CALL 0x003c9d20
MOV RDX,qword ptr [RSP + 0x18]
LEA RAX,[0x675900]
MOV qword ptr [RDX],RAX
LEA RAX,[RDX + 0x168]
MOV qword ptr [RDX + 0x148],R15
MOV qword ptr [RDX + 0x158],RAX
MOV qword ptr [RDX + 0x160],0x0
MOV byte ptr [RDX + 0x168],0x0
OR byte ptr [RDX + 0xc8],0x30
MOV qword ptr [RSP + 0x28],RDX
JMP 0x0037f25d
MOV EDI,0x1a0
CALL 0x0049cb70
MOV RCX,qword ptr [RSP]
MOV EDX,EBP
MOV RSI,R12
MOV RDI,RAX
MOV R15,RAX
CALL 0x003c9d20
LEA RAX,[0x6752b8]
MOV qword ptr [RSP + 0x28],R15
MOV qword ptr [R15],RAX
LEA RAX,[R15 + 0x168]
MOV qword ptr [R15 + 0x178],RAX
MOV qword ptr [R15 + 0x180],RAX
MOV RAX,qword ptr [RBX + 0x340]
MOV qword ptr [R15 + 0x148],0x0
MOV qword ptr [R15 + 0x150],0x0
MOV qword ptr [R15 + 0x158],0x0
MOV dword ptr [R15 + 0x168],0x0
MOV qword ptr [R15 + 0x170],0x0
MOV qword ptr [R15 + 0x188],0x0
MOV byte ptr [R15 + 0x190],0x0
MOV dword ptr [R15 + 0x194],0x0
MOV byte ptr [R15 + 0x198],0x0
OR byte ptr [R15 + 0xc8],0x30
MOV qword ptr [RBX + 0x338],R15
TEST RAX,RAX
JZ 0x0037f25d
MOV qword ptr [RAX + 0x160],R15
JMP 0x0037f25d
MOV EDI,0x170
CALL 0x0049cb70
MOV RCX,qword ptr [RSP]
MOV EDX,EBP
MOV RSI,R12
MOV RDI,RAX
MOV R15,RAX
CALL 0x003c9d20
LEA RAX,[0x675370]
MOV qword ptr [RSP + 0x28],R15
MOV qword ptr [R15],RAX
MOV RAX,qword ptr [RBX + 0x338]
MOV qword ptr [R15 + 0x148],0x0
MOV qword ptr [R15 + 0x150],0x0
MOV qword ptr [R15 + 0x158],0x0
MOV byte ptr [R15 + 0x168],0x0
OR byte ptr [R15 + 0xc8],0x30
MOV qword ptr [RBX + 0x340],R15
TEST RAX,RAX
JZ 0x0037f25d
MOV qword ptr [R15 + 0x160],RAX
JMP 0x0037f25d
MOV RSI,R15
CALL RAX
MOV RSI,qword ptr [RBX + 0x250]
CMP RSI,qword ptr [RBX + 0x258]
JNZ 0x0037f2d9
NOP dword ptr [RAX]
LEA RDX,[RSP + 0x28]
LEA RDI,[RBX + 0x248]
CALL 0x00387bd0
JMP 0x0037f2ed
MOVZX EDX,byte ptr [RSP + 0xf]
MOV RSI,R15
MOV RDI,RBX
CALL 0x0037b280
MOV R15,qword ptr [RSP + 0x28]
MOV R13D,EAX
JMP 0x0037f296
MOV EBP,0x10
JMP 0x0037f239
LEA RDX,[0x572628]
MOV ESI,0x5c
LEA RDI,[0x52e279]
CALL 0x00352af0
TEST qword ptr [RSP],0x400
JNZ 0x0037f278
MOV ECX,0xd
LEA RDI,[0x56c282]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x0037f278
MOV ECX,0x13
LEA RDI,[0x5710d7]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x0037fa38
MOV ECX,0x7
LEA RDI,[0x571027]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0037f278
MOV ECX,0x7
LEA RDI,[0x571046]
MOV RSI,R12
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x0037f278
LEA RSI,[0x5710ea]
MOV RDI,R12
CALL 0x00177790
TEST EAX,EAX
JZ 0x0037f278
JMP 0x0037f273
MOV byte ptr [RSP + 0xf],AL
JMP 0x0037f27d
MOV EDI,0x10
MOV qword ptr [RSP],RDX
CALL 0x0049cb70
MOV RDX,qword ptr [RSP]
MOV RBP,RAX
LEA RAX,[0x672c10]
MOV qword ptr [RBP],RAX
MOV RAX,qword ptr [0x0067cb08]
MOV RAX,qword ptr [RAX + 0x18]
TEST RAX,RAX
JZ 0x0037fb1b
MOV RAX,qword ptr [RAX + 0x8]
MOVZX EAX,byte ptr [RAX + 0x4]
MOV byte ptr [RBP + 0x9],0x0
MOV byte ptr [RBP + 0x8],AL
LEA RAX,[0x657840]
MOV qword ptr [RBP],RAX
MOV qword ptr [RDX + 0x130],RBP
MOV RDI,RBP
MOV qword ptr [RSP],RDX
CALL 0x003c86f0
MOV RDX,qword ptr [RSP]
MOV qword ptr [RDX + 0x128],RAX
MOV RDX,qword ptr [RSP + 0x28]
JMP 0x0037f3c1
MOV EDI,0x10
MOV qword ptr [RSP],RDX
CALL 0x0049cb70
MOV RDX,qword ptr [RSP]
MOV RBP,RAX
LEA RAX,[0x672c10]
MOV qword ptr [RBP],RAX
MOV RAX,qword ptr [0x0067cb08]
MOV RAX,qword ptr [RAX + 0x18]
TEST RAX,RAX
JZ 0x0037fb4b
MOV RAX,qword ptr [RAX + 0x8]
MOVZX EAX,byte ptr [RAX + 0x4]
MOV byte ptr [RBP + 0x9],0x1
MOV byte ptr [RBP + 0x8],AL
LEA RAX,[0x657840]
MOV qword ptr [RBP],RAX
JMP 0x0037fa8f
LEA RDX,[0x5725cb]
MOV ESI,0x69
LEA RDI,[0x52e279]
CALL 0x00352af0
LEA RDX,[0x5725cb]
MOV ESI,0x69
LEA RDI,[0x52e279]
CALL 0x00352af0
LEA RDX,[0x5725cb]
MOV ESI,0x69
LEA RDI,[0x52e279]
CALL 0x00352af0
LEA RDX,[0x5725cb]
MOV ESI,0x69
LEA RDI,[0x52e279]
CALL 0x00352af0
(translation_unit "undefined8 *\nFUN_0037f160(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)\n\n{\n  long *plVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  size_t sVar7;\n  undefined8 *puVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  ulong uVar14;\n  bool bVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  undefined1 uVar19;\n  byte bVar20;\n  char local_59;\n  undefined8 *local_40 [2];\n  \n  bVar20 = 0;\n  uVar14 = param_5 & 0xffffffff;\n  if ((param_4 & 2) != 0) goto LAB_0037f230;\n  lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  bVar15 = false;\n  bVar18 = lVar10 == 0;\n  if (bVar18) goto LAB_0037f97a;\n  lVar9 = 5;\n  pbVar12 = *(byte **)(lVar10 + 0xf80);\n  pbVar13 = (byte *)0x57596e;\n  do {\n    if (lVar9 == 0) break;\n    lVar9 = lVar9 + -1;\n    bVar15 = *pbVar12 < *pbVar13;\n    bVar18 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + 1;\n    pbVar13 = pbVar13 + 1;\n  } while (bVar18);\n  bVar16 = false;\n  bVar15 = (!bVar15 && !bVar18) == bVar15;\n  if (bVar15) {\nLAB_0037f1e5:\n    bVar15 = false;\n    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';\n    if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }\n  }\n  else {\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */\n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }\n  puVar8 = local_40[0];\n  if (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;\n    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);\n    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;\n    if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }\n    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;\n  }\n  else {\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }\n  if (((int)param_5 == 0) && ((param_4 & 2) != 0)) {\n    uVar3 = FUN_0037b280(param_1,puVar8,local_59);\n    uVar14 = (ulong)uVar3;\n    puVar8 = local_40[0];\n  }\n  puVar2 = PTR_DAT_0067cb08;\n  uVar3 = (uint)uVar14;\n  *(uint *)(puVar8 + 0xf) = uVar3;\n  plVar1 = *(long **)(puVar2 + 0x18);\n  if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n  if (*(code **)(*plVar1 + 0x18) == FUN_001a49c0) {\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;\nLAB_0037f2d9:\n    *puVar8 = local_40[0];\n    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;\n  }\n  else {\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }\n  puVar8 = local_40[0];\n  lVar10 = *(long *)(param_1 + 8);\n  lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  if (*(char *)(lVar10 + 0x148) == '\0') {\n    if (lVar9 == 0) {\nLAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar15 = false;\n    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';\n    if (!bVar18) goto LAB_0037f347;\n    lVar11 = 0xc;\n    pbVar12 = param_2;\n    pbVar13 = (byte *)".init_array";\n    do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar18) == bVar15;\n    if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';\n    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }\n  bVar18 = false;\n  lVar10 = 5;\n  pbVar12 = *(byte **)(lVar9 + 0x5b00);\n  pbVar13 = (byte *)0x575186;\n  do {\n    if (lVar10 == 0) break;\n    lVar10 = lVar10 + -1;\n    bVar18 = *pbVar12 < *pbVar13;\n    bVar15 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n  } while (bVar15);\n  if ((!bVar18 && !bVar15) == bVar18) {\n    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;\n  }\n  if (param_3 == 3) {\n    bVar15 = false;\n    bVar18 = *(char *)(param_1 + 0x370) == '\0';\n    if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0037f3c1:\n  if (*(char *)(param_1 + 0x369) != '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }\n  return puVar8;\n}\n\n" (function_definition "undefined8 *\nFUN_0037f160(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)\n\n{\n  long *plVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  size_t sVar7;\n  undefined8 *puVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  ulong uVar14;\n  bool bVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  undefined1 uVar19;\n  byte bVar20;\n  char local_59;\n  undefined8 *local_40 [2];\n  \n  bVar20 = 0;\n  uVar14 = param_5 & 0xffffffff;\n  if ((param_4 & 2) != 0) goto LAB_0037f230;\n  lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  bVar15 = false;\n  bVar18 = lVar10 == 0;\n  if (bVar18) goto LAB_0037f97a;\n  lVar9 = 5;\n  pbVar12 = *(byte **)(lVar10 + 0xf80);\n  pbVar13 = (byte *)0x57596e;\n  do {\n    if (lVar9 == 0) break;\n    lVar9 = lVar9 + -1;\n    bVar15 = *pbVar12 < *pbVar13;\n    bVar18 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + 1;\n    pbVar13 = pbVar13 + 1;\n  } while (bVar18);\n  bVar16 = false;\n  bVar15 = (!bVar15 && !bVar18) == bVar15;\n  if (bVar15) {\nLAB_0037f1e5:\n    bVar15 = false;\n    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';\n    if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }\n  }\n  else {\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */\n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }\n  puVar8 = local_40[0];\n  if (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;\n    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);\n    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;\n    if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }\n    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;\n  }\n  else {\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }\n  if (((int)param_5 == 0) && ((param_4 & 2) != 0)) {\n    uVar3 = FUN_0037b280(param_1,puVar8,local_59);\n    uVar14 = (ulong)uVar3;\n    puVar8 = local_40[0];\n  }\n  puVar2 = PTR_DAT_0067cb08;\n  uVar3 = (uint)uVar14;\n  *(uint *)(puVar8 + 0xf) = uVar3;\n  plVar1 = *(long **)(puVar2 + 0x18);\n  if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n  if (*(code **)(*plVar1 + 0x18) == FUN_001a49c0) {\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;\nLAB_0037f2d9:\n    *puVar8 = local_40[0];\n    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;\n  }\n  else {\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }\n  puVar8 = local_40[0];\n  lVar10 = *(long *)(param_1 + 8);\n  lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  if (*(char *)(lVar10 + 0x148) == '\0') {\n    if (lVar9 == 0) {\nLAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar15 = false;\n    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';\n    if (!bVar18) goto LAB_0037f347;\n    lVar11 = 0xc;\n    pbVar12 = param_2;\n    pbVar13 = (byte *)".init_array";\n    do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar18) == bVar15;\n    if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';\n    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }\n  bVar18 = false;\n  lVar10 = 5;\n  pbVar12 = *(byte **)(lVar9 + 0x5b00);\n  pbVar13 = (byte *)0x575186;\n  do {\n    if (lVar10 == 0) break;\n    lVar10 = lVar10 + -1;\n    bVar18 = *pbVar12 < *pbVar13;\n    bVar15 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n  } while (bVar15);\n  if ((!bVar18 && !bVar15) == bVar18) {\n    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;\n  }\n  if (param_3 == 3) {\n    bVar15 = false;\n    bVar18 = *(char *)(param_1 + 0x370) == '\0';\n    if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0037f3c1:\n  if (*(char *)(param_1 + 0x369) != '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }\n  return puVar8;\n}" type_identifier (pointer_declarator "*\nFUN_0037f160(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)" * (function_declarator "FUN_0037f160(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)" identifier (parameter_list "(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "ulong param_4" type_identifier identifier) , (parameter_declaration "ulong param_5" type_identifier identifier) , (parameter_declaration "char param_6" primitive_type identifier) )))) (compound_statement "{\n  long *plVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  size_t sVar7;\n  undefined8 *puVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  ulong uVar14;\n  bool bVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  undefined1 uVar19;\n  byte bVar20;\n  char local_59;\n  undefined8 *local_40 [2];\n  \n  bVar20 = 0;\n  uVar14 = param_5 & 0xffffffff;\n  if ((param_4 & 2) != 0) goto LAB_0037f230;\n  lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  bVar15 = false;\n  bVar18 = lVar10 == 0;\n  if (bVar18) goto LAB_0037f97a;\n  lVar9 = 5;\n  pbVar12 = *(byte **)(lVar10 + 0xf80);\n  pbVar13 = (byte *)0x57596e;\n  do {\n    if (lVar9 == 0) break;\n    lVar9 = lVar9 + -1;\n    bVar15 = *pbVar12 < *pbVar13;\n    bVar18 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + 1;\n    pbVar13 = pbVar13 + 1;\n  } while (bVar18);\n  bVar16 = false;\n  bVar15 = (!bVar15 && !bVar18) == bVar15;\n  if (bVar15) {\nLAB_0037f1e5:\n    bVar15 = false;\n    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';\n    if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }\n  }\n  else {\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */\n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }\n  puVar8 = local_40[0];\n  if (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;\n    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);\n    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;\n    if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }\n    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;\n  }\n  else {\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }\n  if (((int)param_5 == 0) && ((param_4 & 2) != 0)) {\n    uVar3 = FUN_0037b280(param_1,puVar8,local_59);\n    uVar14 = (ulong)uVar3;\n    puVar8 = local_40[0];\n  }\n  puVar2 = PTR_DAT_0067cb08;\n  uVar3 = (uint)uVar14;\n  *(uint *)(puVar8 + 0xf) = uVar3;\n  plVar1 = *(long **)(puVar2 + 0x18);\n  if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n  if (*(code **)(*plVar1 + 0x18) == FUN_001a49c0) {\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;\nLAB_0037f2d9:\n    *puVar8 = local_40[0];\n    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;\n  }\n  else {\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }\n  puVar8 = local_40[0];\n  lVar10 = *(long *)(param_1 + 8);\n  lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  if (*(char *)(lVar10 + 0x148) == '\0') {\n    if (lVar9 == 0) {\nLAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar15 = false;\n    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';\n    if (!bVar18) goto LAB_0037f347;\n    lVar11 = 0xc;\n    pbVar12 = param_2;\n    pbVar13 = (byte *)".init_array";\n    do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar18) == bVar15;\n    if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';\n    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }\n  bVar18 = false;\n  lVar10 = 5;\n  pbVar12 = *(byte **)(lVar9 + 0x5b00);\n  pbVar13 = (byte *)0x575186;\n  do {\n    if (lVar10 == 0) break;\n    lVar10 = lVar10 + -1;\n    bVar18 = *pbVar12 < *pbVar13;\n    bVar15 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n  } while (bVar15);\n  if ((!bVar18 && !bVar15) == bVar18) {\n    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;\n  }\n  if (param_3 == 3) {\n    bVar15 = false;\n    bVar18 = *(char *)(param_1 + 0x370) == '\0';\n    if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0037f3c1:\n  if (*(char *)(param_1 + 0x369) != '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }\n  return puVar8;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "undefined1 uVar17;" type_identifier identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "undefined1 uVar19;" type_identifier identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "char local_59;" primitive_type identifier ;) (declaration "undefined8 *local_40 [2];" type_identifier (pointer_declarator "*local_40 [2]" * (array_declarator "local_40 [2]" identifier [ number_literal ])) ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = param_5 & 0xffffffff;" (assignment_expression "uVar14 = param_5 & 0xffffffff" identifier = (binary_expression "param_5 & 0xffffffff" identifier & number_literal)) ;) (if_statement "if ((param_4 & 2) != 0) goto LAB_0037f230;" if (parenthesized_expression "((param_4 & 2) != 0)" ( (binary_expression "(param_4 & 2) != 0" (parenthesized_expression "(param_4 & 2)" ( (binary_expression "param_4 & 2" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0037f230;" goto statement_identifier ;)) (expression_statement "lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10);" (assignment_expression "lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10)" identifier = (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar18 = lVar10 == 0;" (assignment_expression "bVar18 = lVar10 == 0" identifier = (binary_expression "lVar10 == 0" identifier == number_literal)) ;) (if_statement "if (bVar18) goto LAB_0037f97a;" if (parenthesized_expression "(bVar18)" ( identifier )) (goto_statement "goto LAB_0037f97a;" goto statement_identifier ;)) (expression_statement "lVar9 = 5;" (assignment_expression "lVar9 = 5" identifier = number_literal) ;) (expression_statement "pbVar12 = *(byte **)(lVar10 + 0xf80);" (assignment_expression "pbVar12 = *(byte **)(lVar10 + 0xf80)" identifier = (pointer_expression "*(byte **)(lVar10 + 0xf80)" * (cast_expression "(byte **)(lVar10 + 0xf80)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar10 + 0xf80)" ( (binary_expression "lVar10 + 0xf80" identifier + number_literal) ))))) ;) (expression_statement "pbVar13 = (byte *)0x57596e;" (assignment_expression "pbVar13 = (byte *)0x57596e" identifier = (cast_expression "(byte *)0x57596e" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if (lVar9 == 0) break;\n    lVar9 = lVar9 + -1;\n    bVar15 = *pbVar12 < *pbVar13;\n    bVar18 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + 1;\n    pbVar13 = pbVar13 + 1;\n  } while (bVar18);" do (compound_statement "{\n    if (lVar9 == 0) break;\n    lVar9 = lVar9 + -1;\n    bVar15 = *pbVar12 < *pbVar13;\n    bVar18 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + 1;\n    pbVar13 = pbVar13 + 1;\n  }" { (if_statement "if (lVar9 == 0) break;" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\nLAB_0037f1e5:\n    bVar15 = false;\n    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';\n    if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }\n  }\n  else {\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */\n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\nLAB_0037f1e5:\n    bVar15 = false;\n    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';\n    if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }\n  }" { (labeled_statement "LAB_0037f1e5:\n    bVar15 = false;" statement_identifier : (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;)) (expression_statement "bVar18 = *(char *)(lVar10 + 0x5689) == '\0';" (assignment_expression "bVar18 = *(char *)(lVar10 + 0x5689) == '\0'" identifier = (binary_expression "*(char *)(lVar10 + 0x5689) == '\0'" (pointer_expression "*(char *)(lVar10 + 0x5689)" * (cast_expression "(char *)(lVar10 + 0x5689)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x5689)" ( (binary_expression "lVar10 + 0x5689" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }" { (labeled_statement "LAB_0037f230:\n      bVar15 = param_3 == 0;" statement_identifier : (expression_statement "bVar15 = param_3 == 0;" (assignment_expression "bVar15 = param_3 == 0" identifier = (binary_expression "param_3 == 0" identifier == number_literal)) ;)) (expression_statement "bVar18 = param_3 == 1;" (assignment_expression "bVar18 = param_3 == 1" identifier = (binary_expression "param_3 == 1" identifier == number_literal)) ;) (if_statement "if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }" { (expression_statement "lVar10 = 0xb;" (assignment_expression "lVar10 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".init_array";" (assignment_expression "pbVar12 = (byte *)".init_array"" identifier = (cast_expression "(byte *)".init_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".init_array"" " string_content "))) ;) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" identifier = identifier) ;) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);" do (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n          param_3 = 0xe;\n        }" { (expression_statement "param_3 = 0xe;" (assignment_expression "param_3 = 0xe" identifier = number_literal) ;) }) (else_clause "else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }" else (compound_statement "{\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }" { (expression_statement "lVar10 = 0xe;" (assignment_expression "lVar10 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".preinit_array";" (assignment_expression "pbVar12 = (byte *)".preinit_array"" identifier = (cast_expression "(byte *)".preinit_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".preinit_array"" " string_content "))) ;) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" identifier = identifier) ;) (do_statement "do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);" do (compound_statement "{\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar16 && !bVar15) == bVar16;" (assignment_expression "bVar15 = (!bVar16 && !bVar15) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n            param_3 = 0x10;\n          }" { (expression_statement "param_3 = 0x10;" (assignment_expression "param_3 = 0x10" identifier = number_literal) ;) }) (else_clause "else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }" else (compound_statement "{\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }" { (expression_statement "lVar10 = 0xb;" (assignment_expression "lVar10 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".fini_array";" (assignment_expression "pbVar12 = (byte *)".fini_array"" identifier = (cast_expression "(byte *)".fini_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".fini_array"" " string_content "))) ;) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" identifier = identifier) ;) (do_statement "do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);" do (compound_statement "{\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }" if (parenthesized_expression "((!bVar18 && !bVar15) == bVar18)" ( (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" ( (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (compound_statement "{\n              param_3 = 0xf;\n            }" { (expression_statement "param_3 = 0xf;" (assignment_expression "param_3 = 0xf" identifier = number_literal) ;) })) }))) }))) })) (expression_statement "plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);" (assignment_expression "plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18)" identifier = (pointer_expression "*(long **)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long **)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (plVar1 == (long *)0x0) goto LAB_0037fb03;" if (parenthesized_expression "(plVar1 == (long *)0x0)" ( (binary_expression "plVar1 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0037fb03;" goto statement_identifier ;)) (expression_statement "local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);" (assignment_expression "local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4)" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (cast_expression "(undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4)" (parenthesized_expression "(**(code **)(*plVar1 + 0xd8))" ( (pointer_expression "**(code **)(*plVar1 + 0xd8)" * (pointer_expression "*(code **)(*plVar1 + 0xd8)" * (cast_expression "(code **)(*plVar1 + 0xd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0xd8)" ( (binary_expression "*plVar1 + 0xd8" (pointer_expression "*plVar1" * identifier) + number_literal) ))))) )) (argument_list "(plVar1,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))))) ;) }) (else_clause "else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }" else (compound_statement "{\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }" { (expression_statement "lVar10 = 0xe;" (assignment_expression "lVar10 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".debug_abbrev";" (assignment_expression "pbVar12 = (byte *)".debug_abbrev"" identifier = (cast_expression "(byte *)".debug_abbrev"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_abbrev"" " string_content "))) ;) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" identifier = identifier) ;) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);" do (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }" { (expression_statement "puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);" (assignment_expression "puVar8 = (undefined8 *)FUN_0049cb70(0x1a0)" identifier = (cast_expression "(undefined8 *)FUN_0049cb70(0x1a0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb70(0x1a0)" identifier (argument_list "(0x1a0)" ( number_literal ))))) ;) comment (expression_statement "FUN_003c9d20(puVar8,param_2,param_3,param_4);" (call_expression "FUN_003c9d20(puVar8,param_2,param_3,param_4)" identifier (argument_list "(puVar8,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*puVar8 = &PTR_FUN_006752b8;" (assignment_expression "*puVar8 = &PTR_FUN_006752b8" (pointer_expression "*puVar8" * identifier) = (pointer_expression "&PTR_FUN_006752b8" & identifier)) ;) (expression_statement "puVar8[0x2f] = puVar8 + 0x2d;" (assignment_expression "puVar8[0x2f] = puVar8 + 0x2d" (subscript_expression "puVar8[0x2f]" identifier [ number_literal ]) = (binary_expression "puVar8 + 0x2d" identifier + number_literal)) ;) (expression_statement "puVar8[0x30] = puVar8 + 0x2d;" (assignment_expression "puVar8[0x30] = puVar8 + 0x2d" (subscript_expression "puVar8[0x30]" identifier [ number_literal ]) = (binary_expression "puVar8 + 0x2d" identifier + number_literal)) ;) (expression_statement "lVar10 = *(long *)(param_1 + 0x340);" (assignment_expression "lVar10 = *(long *)(param_1 + 0x340)" identifier = (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) ))))) ;) (expression_statement "puVar8[0x29] = 0;" (assignment_expression "puVar8[0x29] = 0" (subscript_expression "puVar8[0x29]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0x2a] = 0;" (assignment_expression "puVar8[0x2a] = 0" (subscript_expression "puVar8[0x2a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0x2b] = 0;" (assignment_expression "puVar8[0x2b] = 0" (subscript_expression "puVar8[0x2b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar8 + 0x2d) = 0;" (assignment_expression "*(undefined4 *)(puVar8 + 0x2d) = 0" (pointer_expression "*(undefined4 *)(puVar8 + 0x2d)" * (cast_expression "(undefined4 *)(puVar8 + 0x2d)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x2d)" ( (binary_expression "puVar8 + 0x2d" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar8[0x2e] = 0;" (assignment_expression "puVar8[0x2e] = 0" (subscript_expression "puVar8[0x2e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0x31] = 0;" (assignment_expression "puVar8[0x31] = 0" (subscript_expression "puVar8[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 0x32) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x32) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x32)" * (cast_expression "(undefined1 *)(puVar8 + 0x32)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x32)" ( (binary_expression "puVar8 + 0x32" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((long)puVar8 + 0x194) = 0;" (assignment_expression "*(undefined4 *)((long)puVar8 + 0x194) = 0" (pointer_expression "*(undefined4 *)((long)puVar8 + 0x194)" * (cast_expression "(undefined4 *)((long)puVar8 + 0x194)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + 0x194)" ( (binary_expression "(long)puVar8 + 0x194" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 0x33) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x33) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x33)" * (cast_expression "(undefined1 *)(puVar8 + 0x33)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x33)" ( (binary_expression "puVar8 + 0x33" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;" (assignment_expression "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" * (cast_expression "(byte *)(puVar8 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x19)" ( (binary_expression "puVar8 + 0x19" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" * (cast_expression "(byte *)(puVar8 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x19)" ( (binary_expression "puVar8 + 0x19" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(undefined8 **)(param_1 + 0x338) = puVar8;" (assignment_expression "*(undefined8 **)(param_1 + 0x338) = puVar8" (pointer_expression "*(undefined8 **)(param_1 + 0x338)" * (cast_expression "(undefined8 **)(param_1 + 0x338)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x338)" ( (binary_expression "param_1 + 0x338" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_40[0] = puVar8;" (assignment_expression "local_40[0] = puVar8" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }" if (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }" { (expression_statement "*(undefined8 **)(lVar10 + 0x160) = puVar8;" (assignment_expression "*(undefined8 **)(lVar10 + 0x160) = puVar8" (pointer_expression "*(undefined8 **)(lVar10 + 0x160)" * (cast_expression "(undefined8 **)(lVar10 + 0x160)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar10 + 0x160)" ( (binary_expression "lVar10 + 0x160" identifier + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }" else (compound_statement "{\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }" { (expression_statement "lVar10 = 0xc;" (assignment_expression "lVar10 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".debug_info";" (assignment_expression "pbVar12 = (byte *)".debug_info"" identifier = (cast_expression "(byte *)".debug_info"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_info"" " string_content "))) ;) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" identifier = identifier) ;) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;" if (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" ( (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0037f230;" goto statement_identifier ;)) (expression_statement "puVar8 = (undefined8 *)FUN_0049cb70(0x170);" (assignment_expression "puVar8 = (undefined8 *)FUN_0049cb70(0x170)" identifier = (cast_expression "(undefined8 *)FUN_0049cb70(0x170)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb70(0x170)" identifier (argument_list "(0x170)" ( number_literal ))))) ;) comment (expression_statement "FUN_003c9d20(puVar8,param_2,param_3,param_4);" (call_expression "FUN_003c9d20(puVar8,param_2,param_3,param_4)" identifier (argument_list "(puVar8,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*puVar8 = &PTR_FUN_00675370;" (assignment_expression "*puVar8 = &PTR_FUN_00675370" (pointer_expression "*puVar8" * identifier) = (pointer_expression "&PTR_FUN_00675370" & identifier)) ;) (expression_statement "lVar10 = *(long *)(param_1 + 0x338);" (assignment_expression "lVar10 = *(long *)(param_1 + 0x338)" identifier = (pointer_expression "*(long *)(param_1 + 0x338)" * (cast_expression "(long *)(param_1 + 0x338)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x338)" ( (binary_expression "param_1 + 0x338" identifier + number_literal) ))))) ;) (expression_statement "puVar8[0x29] = 0;" (assignment_expression "puVar8[0x29] = 0" (subscript_expression "puVar8[0x29]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0x2a] = 0;" (assignment_expression "puVar8[0x2a] = 0" (subscript_expression "puVar8[0x2a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0x2b] = 0;" (assignment_expression "puVar8[0x2b] = 0" (subscript_expression "puVar8[0x2b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 0x2d) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x2d) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x2d)" * (cast_expression "(undefined1 *)(puVar8 + 0x2d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x2d)" ( (binary_expression "puVar8 + 0x2d" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;" (assignment_expression "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" * (cast_expression "(byte *)(puVar8 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x19)" ( (binary_expression "puVar8 + 0x19" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" * (cast_expression "(byte *)(puVar8 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x19)" ( (binary_expression "puVar8 + 0x19" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(undefined8 **)(param_1 + 0x340) = puVar8;" (assignment_expression "*(undefined8 **)(param_1 + 0x340) = puVar8" (pointer_expression "*(undefined8 **)(param_1 + 0x340)" * (cast_expression "(undefined8 **)(param_1 + 0x340)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_40[0] = puVar8;" (assignment_expression "local_40[0] = puVar8" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }" if (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar8[0x2c] = lVar10;\n        }" { (expression_statement "puVar8[0x2c] = lVar10;" (assignment_expression "puVar8[0x2c] = lVar10" (subscript_expression "puVar8[0x2c]" identifier [ number_literal ]) = identifier) ;) })) }))) }))) }) (else_clause "else {\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */\n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }" else (compound_statement "{\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */\n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }" { (expression_statement "lVar9 = 6;" (assignment_expression "lVar9 = 6" identifier = number_literal) ;) (expression_statement "pbVar12 = &DAT_00533552;" (assignment_expression "pbVar12 = &DAT_00533552" identifier = (pointer_expression "&DAT_00533552" & identifier)) ;) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" identifier = identifier) ;) (do_statement "do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);" do (compound_statement "{\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    }" { (if_statement "if (lVar9 == 0) break;" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;" if (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" ( (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0037f1e5;" goto statement_identifier ;)) (expression_statement "puVar8 = (undefined8 *)FUN_0049cb70(0x178);" (assignment_expression "puVar8 = (undefined8 *)FUN_0049cb70(0x178)" identifier = (cast_expression "(undefined8 *)FUN_0049cb70(0x178)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb70(0x178)" identifier (argument_list "(0x178)" ( number_literal ))))) ;) comment (expression_statement "FUN_003c9d20(puVar8,param_2,param_3,param_4);" (call_expression "FUN_003c9d20(puVar8,param_2,param_3,param_4)" identifier (argument_list "(puVar8,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*puVar8 = &PTR_FUN_00675900;" (assignment_expression "*puVar8 = &PTR_FUN_00675900" (pointer_expression "*puVar8" * identifier) = (pointer_expression "&PTR_FUN_00675900" & identifier)) ;) (expression_statement "puVar8[0x29] = lVar10;" (assignment_expression "puVar8[0x29] = lVar10" (subscript_expression "puVar8[0x29]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[0x2b] = puVar8 + 0x2d;" (assignment_expression "puVar8[0x2b] = puVar8 + 0x2d" (subscript_expression "puVar8[0x2b]" identifier [ number_literal ]) = (binary_expression "puVar8 + 0x2d" identifier + number_literal)) ;) (expression_statement "puVar8[0x2c] = 0;" (assignment_expression "puVar8[0x2c] = 0" (subscript_expression "puVar8[0x2c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 0x2d) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x2d) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x2d)" * (cast_expression "(undefined1 *)(puVar8 + 0x2d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x2d)" ( (binary_expression "puVar8 + 0x2d" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;" (assignment_expression "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" * (cast_expression "(byte *)(puVar8 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x19)" ( (binary_expression "puVar8 + 0x19" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" * (cast_expression "(byte *)(puVar8 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x19)" ( (binary_expression "puVar8 + 0x19" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "local_40[0] = puVar8;" (assignment_expression "local_40[0] = puVar8" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) (if_statement "if (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;\n    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);\n    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;\n    if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }\n    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;\n  }\n  else {\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }" if (parenthesized_expression "(*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')" ( (binary_expression "*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0'" (pointer_expression "*(char *)(*(long *)(param_1 + 8) + 0x148)" * (cast_expression "(char *)(*(long *)(param_1 + 8) + 0x148)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" ( (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;\n    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);\n    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;\n    if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }\n    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;\n  }" { (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;" if (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0037f97a;" goto statement_identifier ;)) (expression_statement "local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);" (assignment_expression "local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59)" identifier = (pointer_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;" if (parenthesized_expression "((local_59 == '\0') || (((uint)param_4 & 3) != 3))" ( (binary_expression "(local_59 == '\0') || (((uint)param_4 & 3) != 3)" (parenthesized_expression "(local_59 == '\0')" ( (binary_expression "local_59 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(((uint)param_4 & 3) != 3)" ( (binary_expression "((uint)param_4 & 3) != 3" (parenthesized_expression "((uint)param_4 & 3)" ( (binary_expression "(uint)param_4 & 3" (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_0037f273;" goto statement_identifier ;)) (if_statement "if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }" { (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar18 = (param_4 & 0x400) == 0;" (assignment_expression "bVar18 = (param_4 & 0x400) == 0" identifier = (binary_expression "(param_4 & 0x400) == 0" (parenthesized_expression "(param_4 & 0x400)" ( (binary_expression "param_4 & 0x400" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (!bVar18) goto LAB_0037f278;" if (parenthesized_expression "(!bVar18)" ( (unary_expression "!bVar18" ! identifier) )) (goto_statement "goto LAB_0037f278;" goto statement_identifier ;)) (expression_statement "lVar10 = 0xd;" (assignment_expression "lVar10 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".data.rel.ro";" (assignment_expression "pbVar13 = (byte *)".data.rel.ro"" identifier = (cast_expression "(byte *)".data.rel.ro"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".data.rel.ro"" " string_content "))) ;) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);" do (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) goto LAB_0037f278;" if (parenthesized_expression "(bVar15)" ( identifier )) (goto_statement "goto LAB_0037f278;" goto statement_identifier ;)) (expression_statement "lVar10 = 0x13;" (assignment_expression "lVar10 = 0x13" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".data.rel.ro.local";" (assignment_expression "pbVar13 = (byte *)".data.rel.ro.local"" identifier = (cast_expression "(byte *)".data.rel.ro.local"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".data.rel.ro.local"" " string_content "))) ;) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);" do (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar16 && !bVar15) == bVar16;" (assignment_expression "bVar15 = (!bVar16 && !bVar15) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }" { (expression_statement "lVar10 = 7;" (assignment_expression "lVar10 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".ctors";" (assignment_expression "pbVar13 = (byte *)".ctors"" identifier = (cast_expression "(byte *)".ctors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors"" " string_content "))) ;) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar18 && !bVar15) == bVar18;" (assignment_expression "bVar15 = (!bVar18 && !bVar15) == bVar18" identifier = (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" ( (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }" { (expression_statement "lVar10 = 7;" (assignment_expression "lVar10 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".dtors";" (assignment_expression "pbVar13 = (byte *)".dtors"" identifier = (cast_expression "(byte *)".dtors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors"" " string_content "))) ;) (do_statement "do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);" do (compound_statement "{\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;" if (parenthesized_expression "(((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0))" ( (binary_expression "((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)" (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" ( (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) != identifier) )) && (parenthesized_expression "(iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)" ( (comma_expression "iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0" (assignment_expression "iVar4 = strcmp((char *)param_2,".jcr")" identifier = (call_expression "strcmp((char *)param_2,".jcr")" identifier (argument_list "((char *)param_2,".jcr")" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal "".jcr"" " string_content ") )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_0037f273;" goto statement_identifier ;)) })) (goto_statement "goto LAB_0037f278;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }" else (compound_statement "{\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }" { (if_statement "if (2 < param_3 - 0xeU) goto LAB_0037f273;" if (parenthesized_expression "(2 < param_3 - 0xeU)" ( (binary_expression "2 < param_3 - 0xeU" number_literal < (binary_expression "param_3 - 0xeU" identifier - number_literal)) )) (goto_statement "goto LAB_0037f273;" goto statement_identifier ;)) (labeled_statement "LAB_0037f278:\n      local_59 = '\0';" statement_identifier : (expression_statement "local_59 = '\0';" (assignment_expression "local_59 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;)) }))) (expression_statement "*(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;" (assignment_expression "*(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20" (pointer_expression "*(byte *)((long)puVar8 + 0xc9)" * (cast_expression "(byte *)((long)puVar8 + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + 0xc9)" ( (binary_expression "(long)puVar8 + 0xc9" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)puVar8 + 0xc9) | 0x20" (pointer_expression "*(byte *)((long)puVar8 + 0xc9)" * (cast_expression "(byte *)((long)puVar8 + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + 0xc9)" ( (binary_expression "(long)puVar8 + 0xc9" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) ;) }) (else_clause "else {\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }" else (compound_statement "{\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }" { (labeled_statement "LAB_0037f273:\n    local_59 = param_6;" statement_identifier : (expression_statement "local_59 = param_6;" (assignment_expression "local_59 = param_6" identifier = identifier) ;)) (if_statement "if (param_6 != '\0') goto LAB_0037f278;" if (parenthesized_expression "(param_6 != '\0')" ( (binary_expression "param_6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0037f278;" goto statement_identifier ;)) }))) (if_statement "if (((int)param_5 == 0) && ((param_4 & 2) != 0)) {\n    uVar3 = FUN_0037b280(param_1,puVar8,local_59);\n    uVar14 = (ulong)uVar3;\n    puVar8 = local_40[0];\n  }" if (parenthesized_expression "(((int)param_5 == 0) && ((param_4 & 2) != 0))" ( (binary_expression "((int)param_5 == 0) && ((param_4 & 2) != 0)" (parenthesized_expression "((int)param_5 == 0)" ( (binary_expression "(int)param_5 == 0" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) && (parenthesized_expression "((param_4 & 2) != 0)" ( (binary_expression "(param_4 & 2) != 0" (parenthesized_expression "(param_4 & 2)" ( (binary_expression "param_4 & 2" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    uVar3 = FUN_0037b280(param_1,puVar8,local_59);\n    uVar14 = (ulong)uVar3;\n    puVar8 = local_40[0];\n  }" { (expression_statement "uVar3 = FUN_0037b280(param_1,puVar8,local_59);" (assignment_expression "uVar3 = FUN_0037b280(param_1,puVar8,local_59)" identifier = (call_expression "FUN_0037b280(param_1,puVar8,local_59)" identifier (argument_list "(param_1,puVar8,local_59)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar14 = (ulong)uVar3;" (assignment_expression "uVar14 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) })) (expression_statement "puVar2 = PTR_DAT_0067cb08;" (assignment_expression "puVar2 = PTR_DAT_0067cb08" identifier = identifier) ;) (expression_statement "uVar3 = (uint)uVar14;" (assignment_expression "uVar3 = (uint)uVar14" identifier = (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(uint *)(puVar8 + 0xf) = uVar3;" (assignment_expression "*(uint *)(puVar8 + 0xf) = uVar3" (pointer_expression "*(uint *)(puVar8 + 0xf)" * (cast_expression "(uint *)(puVar8 + 0xf)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0xf)" ( (binary_expression "puVar8 + 0xf" identifier + number_literal) )))) = identifier) ;) (expression_statement "plVar1 = *(long **)(puVar2 + 0x18);" (assignment_expression "plVar1 = *(long **)(puVar2 + 0x18)" identifier = (pointer_expression "*(long **)(puVar2 + 0x18)" * (cast_expression "(long **)(puVar2 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x18)" ( (binary_expression "puVar2 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (plVar1 == (long *)0x0) goto LAB_0037fb03;" if (parenthesized_expression "(plVar1 == (long *)0x0)" ( (binary_expression "plVar1 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0037fb03;" goto statement_identifier ;)) (if_statement "if (*(code **)(*plVar1 + 0x18) == FUN_001a49c0) {\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;\nLAB_0037f2d9:\n    *puVar8 = local_40[0];\n    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;\n  }\n  else {\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }" if (parenthesized_expression "(*(code **)(*plVar1 + 0x18) == FUN_001a49c0)" ( (binary_expression "*(code **)(*plVar1 + 0x18) == FUN_001a49c0" (pointer_expression "*(code **)(*plVar1 + 0x18)" * (cast_expression "(code **)(*plVar1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0x18)" ( (binary_expression "*plVar1 + 0x18" (pointer_expression "*plVar1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;\nLAB_0037f2d9:\n    *puVar8 = local_40[0];\n    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;\n  }" { (expression_statement "puVar8 = *(undefined8 **)(param_1 + 0x250);" (assignment_expression "puVar8 = *(undefined8 **)(param_1 + 0x250)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 0x250)" * (cast_expression "(undefined8 **)(param_1 + 0x250)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) ;) (if_statement "if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;" if (parenthesized_expression "(puVar8 == *(undefined8 **)(param_1 + 600))" ( (binary_expression "puVar8 == *(undefined8 **)(param_1 + 600)" identifier == (pointer_expression "*(undefined8 **)(param_1 + 600)" * (cast_expression "(undefined8 **)(param_1 + 600)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 600)" ( (binary_expression "param_1 + 600" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0037f938;" goto statement_identifier ;)) (labeled_statement "LAB_0037f2d9:\n    *puVar8 = local_40[0];" statement_identifier : (expression_statement "*puVar8 = local_40[0];" (assignment_expression "*puVar8 = local_40[0]" (pointer_expression "*puVar8" * identifier) = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;)) (expression_statement "*(undefined8 **)(param_1 + 0x250) = puVar8 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 0x250) = puVar8 + 1" (pointer_expression "*(undefined8 **)(param_1 + 0x250)" * (cast_expression "(undefined8 **)(param_1 + 0x250)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }" else (compound_statement "{\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }" { (expression_statement "(**(code **)(*plVar1 + 0x18))(plVar1,puVar8);" (call_expression "(**(code **)(*plVar1 + 0x18))(plVar1,puVar8)" (parenthesized_expression "(**(code **)(*plVar1 + 0x18))" ( (pointer_expression "**(code **)(*plVar1 + 0x18)" * (pointer_expression "*(code **)(*plVar1 + 0x18)" * (cast_expression "(code **)(*plVar1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0x18)" ( (binary_expression "*plVar1 + 0x18" (pointer_expression "*plVar1" * identifier) + number_literal) ))))) )) (argument_list "(plVar1,puVar8)" ( identifier , identifier ))) ;) (expression_statement "puVar8 = *(undefined8 **)(param_1 + 0x250);" (assignment_expression "puVar8 = *(undefined8 **)(param_1 + 0x250)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 0x250)" * (cast_expression "(undefined8 **)(param_1 + 0x250)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) ;) (if_statement "if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;" if (parenthesized_expression "(puVar8 != *(undefined8 **)(param_1 + 600))" ( (binary_expression "puVar8 != *(undefined8 **)(param_1 + 600)" identifier != (pointer_expression "*(undefined8 **)(param_1 + 600)" * (cast_expression "(undefined8 **)(param_1 + 600)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 600)" ( (binary_expression "param_1 + 600" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0037f2d9;" goto statement_identifier ;)) (labeled_statement "LAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);" statement_identifier : (expression_statement "FUN_00387bd0(param_1 + 0x248,puVar8,local_40);" (call_expression "FUN_00387bd0(param_1 + 0x248,puVar8,local_40)" identifier (argument_list "(param_1 + 0x248,puVar8,local_40)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) , identifier , identifier ))) ;)) }))) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) (expression_statement "lVar10 = *(long *)(param_1 + 8);" (assignment_expression "lVar10 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10);" (assignment_expression "lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10)" identifier = (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(lVar10 + 0x148) == '\0') {\n    if (lVar9 == 0) {\nLAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar15 = false;\n    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';\n    if (!bVar18) goto LAB_0037f347;\n    lVar11 = 0xc;\n    pbVar12 = param_2;\n    pbVar13 = (byte *)".init_array";\n    do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar18) == bVar15;\n    if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';\n    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }" if (parenthesized_expression "(*(char *)(lVar10 + 0x148) == '\0')" ( (binary_expression "*(char *)(lVar10 + 0x148) == '\0'" (pointer_expression "*(char *)(lVar10 + 0x148)" * (cast_expression "(char *)(lVar10 + 0x148)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x148)" ( (binary_expression "lVar10 + 0x148" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (lVar9 == 0) {\nLAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar15 = false;\n    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';\n    if (!bVar18) goto LAB_0037f347;\n    lVar11 = 0xc;\n    pbVar12 = param_2;\n    pbVar13 = (byte *)".init_array";\n    do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar18) == bVar15;\n    if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';\n    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }\n  }" { (if_statement "if (lVar9 == 0) {\nLAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }" { (labeled_statement "LAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");" statement_identifier : comment (expression_statement "FUN_00352af0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;)) })) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar18 = *(char *)(lVar9 + 0x5051) == '\0';" (assignment_expression "bVar18 = *(char *)(lVar9 + 0x5051) == '\0'" identifier = (binary_expression "*(char *)(lVar9 + 0x5051) == '\0'" (pointer_expression "*(char *)(lVar9 + 0x5051)" * (cast_expression "(char *)(lVar9 + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x5051)" ( (binary_expression "lVar9 + 0x5051" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (!bVar18) goto LAB_0037f347;" if (parenthesized_expression "(!bVar18)" ( (unary_expression "!bVar18" ! identifier) )) (goto_statement "goto LAB_0037f347;" goto statement_identifier ;)) (expression_statement "lVar11 = 0xc;" (assignment_expression "lVar11 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".init_array";" (assignment_expression "pbVar13 = (byte *)".init_array"" identifier = (cast_expression "(byte *)".init_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".init_array"" " string_content "))) ;) (do_statement "do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);" do (compound_statement "{\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    }" { (if_statement "if (lVar11 == 0) break;" if (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }" { (labeled_statement "LAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;" statement_identifier : (expression_statement "*(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;" (assignment_expression "*(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4" (pointer_expression "*(byte *)((long)local_40[0] + 0xc9)" * (cast_expression "(byte *)((long)local_40[0] + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40[0] + 0xc9)" ( (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) + number_literal) )))) = (binary_expression "*(byte *)((long)local_40[0] + 0xc9) | 4" (pointer_expression "*(byte *)((long)local_40[0] + 0xc9)" * (cast_expression "(byte *)((long)local_40[0] + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40[0] + 0xc9)" ( (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) + number_literal) )))) | number_literal)) ;)) }) (else_clause "else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }" else (compound_statement "{\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }" { (expression_statement "lVar11 = 0xc;" (assignment_expression "lVar11 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".fini_array";" (assignment_expression "pbVar13 = (byte *)".fini_array"" identifier = (cast_expression "(byte *)".fini_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".fini_array"" " string_content "))) ;) (do_statement "do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);" do (compound_statement "{\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" { (if_statement "if (lVar11 == 0) break;" if (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;" if (parenthesized_expression "((!bVar16 && !bVar15) == bVar16)" ( (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_0037f340;" goto statement_identifier ;)) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar18 = *(char *)(lVar9 + 0x1179) == '\0';" (assignment_expression "bVar18 = *(char *)(lVar9 + 0x1179) == '\0'" identifier = (binary_expression "*(char *)(lVar9 + 0x1179) == '\0'" (pointer_expression "*(char *)(lVar9 + 0x1179)" * (cast_expression "(char *)(lVar9 + 0x1179)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x1179)" ( (binary_expression "lVar9 + 0x1179" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }" { (expression_statement "lVar11 = 7;" (assignment_expression "lVar11 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".ctors";" (assignment_expression "pbVar13 = (byte *)".ctors"" identifier = (cast_expression "(byte *)".ctors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors"" " string_content "))) ;) (do_statement "do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);" do (compound_statement "{\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" { (if_statement "if (lVar11 == 0) break;" if (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }" { (expression_statement "lVar11 = 7;" (assignment_expression "lVar11 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".dtors";" (assignment_expression "pbVar13 = (byte *)".dtors"" identifier = (cast_expression "(byte *)".dtors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors"" " string_content "))) ;) (do_statement "do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);" do (compound_statement "{\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          }" { (if_statement "if (lVar11 == 0) break;" if (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;" if (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" ( (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0037f347;" goto statement_identifier ;)) })) (goto_statement "goto LAB_0037f340;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';" statement_identifier : (expression_statement "bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';" (assignment_expression "bVar15 = *(char *)(lVar9 + 0x62b9) == '\0'" identifier = (binary_expression "*(char *)(lVar9 + 0x62b9) == '\0'" (pointer_expression "*(char *)(lVar9 + 0x62b9)" * (cast_expression "(char *)(lVar9 + 0x62b9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x62b9)" ( (binary_expression "lVar9 + 0x62b9" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;)) (if_statement "if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }" if (parenthesized_expression "(((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15))" ( (binary_expression "((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)" (parenthesized_expression "((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15))" ( (binary_expression "(!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)" (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) && (parenthesized_expression "(bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)" ( (comma_expression "bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15" (assignment_expression "bVar15 = *(char *)(lVar10 + 0x148) == '\0'" identifier = (binary_expression "*(char *)(lVar10 + 0x148) == '\0'" (pointer_expression "*(char *)(lVar10 + 0x148)" * (cast_expression "(char *)(lVar10 + 0x148)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x148)" ( (binary_expression "lVar10 + 0x148" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) , identifier) ))) )) && (parenthesized_expression "(bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)" ( (comma_expression "bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15" (assignment_expression "bVar15 = *(char *)(param_1 + 0x371) == '\0'" identifier = (binary_expression "*(char *)(param_1 + 0x371) == '\0'" (pointer_expression "*(char *)(param_1 + 0x371)" * (cast_expression "(char *)(param_1 + 0x371)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x371)" ( (binary_expression "param_1 + 0x371" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) , identifier) ))) )) (compound_statement "{\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }" { (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar15 = *(char *)(lVar9 + 0x5051) == '\0';" (assignment_expression "bVar15 = *(char *)(lVar9 + 0x5051) == '\0'" identifier = (binary_expression "*(char *)(lVar9 + 0x5051) == '\0'" (pointer_expression "*(char *)(lVar9 + 0x5051)" * (cast_expression "(char *)(lVar9 + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x5051)" ( (binary_expression "lVar9 + 0x5051" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }" { (expression_statement "lVar10 = 6;" (assignment_expression "lVar10 = 6" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".text";" (assignment_expression "pbVar13 = (byte *)".text"" identifier = (cast_expression "(byte *)".text"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".text"" " string_content "))) ;) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar15 = (!bVar18 && !bVar15) == bVar18;" (assignment_expression "bVar15 = (!bVar18 && !bVar15) == bVar18" identifier = (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" ( (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }" { (expression_statement "pbVar12 = (byte *)((long)local_40[0] + 0xc9);" (assignment_expression "pbVar12 = (byte *)((long)local_40[0] + 0xc9)" identifier = (cast_expression "(byte *)((long)local_40[0] + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40[0] + 0xc9)" ( (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "*pbVar12 = *pbVar12 | 4;" (assignment_expression "*pbVar12 = *pbVar12 | 4" (pointer_expression "*pbVar12" * identifier) = (binary_expression "*pbVar12 | 4" (pointer_expression "*pbVar12" * identifier) | number_literal)) ;) (expression_statement "bVar15 = *pbVar12 == 0;" (assignment_expression "bVar15 = *pbVar12 == 0" identifier = (binary_expression "*pbVar12 == 0" (pointer_expression "*pbVar12" * identifier) == number_literal)) ;) })) })) })) }) (else_clause "else {\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }" else (compound_statement "{\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }" { (expression_statement "bVar15 = lVar9 == 0;" (assignment_expression "bVar15 = lVar9 == 0" identifier = (binary_expression "lVar9 == 0" identifier == number_literal)) ;) (if_statement "if (bVar15) goto LAB_0037f97a;" if (parenthesized_expression "(bVar15)" ( identifier )) (goto_statement "goto LAB_0037f97a;" goto statement_identifier ;)) }))) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "lVar10 = 5;" (assignment_expression "lVar10 = 5" identifier = number_literal) ;) (expression_statement "pbVar12 = *(byte **)(lVar9 + 0x5b00);" (assignment_expression "pbVar12 = *(byte **)(lVar9 + 0x5b00)" identifier = (pointer_expression "*(byte **)(lVar9 + 0x5b00)" * (cast_expression "(byte **)(lVar9 + 0x5b00)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar9 + 0x5b00)" ( (binary_expression "lVar9 + 0x5b00" identifier + number_literal) ))))) ;) (expression_statement "pbVar13 = (byte *)0x575186;" (assignment_expression "pbVar13 = (byte *)0x575186" identifier = (cast_expression "(byte *)0x575186" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if (lVar10 == 0) break;\n    lVar10 = lVar10 + -1;\n    bVar18 = *pbVar12 < *pbVar13;\n    bVar15 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n  } while (bVar15);" do (compound_statement "{\n    if (lVar10 == 0) break;\n    lVar10 = lVar10 + -1;\n    bVar18 = *pbVar12 < *pbVar13;\n    bVar15 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n  }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar18 && !bVar15) == bVar18) {\n    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;\n  }" if (parenthesized_expression "((!bVar18 && !bVar15) == bVar18)" ( (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" ( (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (compound_statement "{\n    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;\n  }" { (expression_statement "*(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;" (assignment_expression "*(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8" (pointer_expression "*(byte *)((long)local_40[0] + 0xc9)" * (cast_expression "(byte *)((long)local_40[0] + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40[0] + 0xc9)" ( (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) + number_literal) )))) = (binary_expression "*(byte *)((long)local_40[0] + 0xc9) | 8" (pointer_expression "*(byte *)((long)local_40[0] + 0xc9)" * (cast_expression "(byte *)((long)local_40[0] + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40[0] + 0xc9)" ( (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) + number_literal) )))) | number_literal)) ;) })) (if_statement "if (param_3 == 3) {\n    bVar15 = false;\n    bVar18 = *(char *)(param_1 + 0x370) == '\0';\n    if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(param_3 == 3)" ( (binary_expression "param_3 == 3" identifier == number_literal) )) (compound_statement "{\n    bVar15 = false;\n    bVar18 = *(char *)(param_1 + 0x370) == '\0';\n    if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }\n  }" { (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar18 = *(char *)(param_1 + 0x370) == '\0';" (assignment_expression "bVar18 = *(char *)(param_1 + 0x370) == '\0'" identifier = (binary_expression "*(char *)(param_1 + 0x370) == '\0'" (pointer_expression "*(char *)(param_1 + 0x370)" * (cast_expression "(char *)(param_1 + 0x370)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x370)" ( (binary_expression "param_1 + 0x370" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }" { (expression_statement "lVar10 = 5;" (assignment_expression "lVar10 = 5" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".stab";" (assignment_expression "pbVar13 = (byte *)".stab"" identifier = (cast_expression "(byte *)".stab"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".stab"" " string_content "))) ;) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);" do (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "uVar19 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "uVar19 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }" if (parenthesized_expression "((bool)uVar19)" ( (cast_expression "(bool)uVar19" ( (type_descriptor "bool" primitive_type) ) identifier) )) (compound_statement "{\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }" { (expression_statement "sVar7 = strlen((char *)param_2);" (assignment_expression "sVar7 = strlen((char *)param_2)" identifier = (call_expression "strlen((char *)param_2)" identifier (argument_list "((char *)param_2)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "lVar10 = 4;" (assignment_expression "lVar10 = 4" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2 + (sVar7 - 3);" (assignment_expression "pbVar12 = param_2 + (sVar7 - 3)" identifier = (binary_expression "param_2 + (sVar7 - 3)" identifier + (parenthesized_expression "(sVar7 - 3)" ( (binary_expression "sVar7 - 3" identifier - number_literal) )))) ;) (expression_statement "pbVar13 = (byte *)0x579a2e;" (assignment_expression "pbVar13 = (byte *)0x579a2e" identifier = (cast_expression "(byte *)0x579a2e" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);" do (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar17 = *pbVar12 < *pbVar13;" (assignment_expression "uVar17 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "uVar19 = *pbVar12 == *pbVar13;" (assignment_expression "uVar19 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar19)" ( (cast_expression "(bool)uVar19" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (if_statement "if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }" if (parenthesized_expression "((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17)" ( (binary_expression "(!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17" (parenthesized_expression "(!(bool)uVar17 && !(bool)uVar19)" ( (binary_expression "!(bool)uVar17 && !(bool)uVar19" (unary_expression "!(bool)uVar17" ! (cast_expression "(bool)uVar17" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar19" ! (cast_expression "(bool)uVar19" ( (type_descriptor "bool" primitive_type) ) identifier))) )) == (cast_expression "(bool)uVar17" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (compound_statement "{\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }" { (expression_statement "*(undefined1 *)(param_1 + 0x370) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x370) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x370)" * (cast_expression "(undefined1 *)(param_1 + 0x370)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x370)" ( (binary_expression "param_1 + 0x370" identifier + number_literal) )))) = number_literal) ;) })) })) })) }) (else_clause "else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }" else (if_statement "if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "((param_3 == 1) || (param_3 == 8))" ( (binary_expression "(param_3 == 1) || (param_3 == 8)" (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) || (parenthesized_expression "(param_3 == 8)" ( (binary_expression "param_3 == 8" identifier == number_literal) ))) )) (compound_statement "{\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }" { (expression_statement "bVar15 = uVar3 < 0x15;" (assignment_expression "bVar15 = uVar3 < 0x15" identifier = (binary_expression "uVar3 < 0x15" identifier < number_literal)) ;) (expression_statement "bVar18 = uVar3 == 0x15;" (assignment_expression "bVar18 = uVar3 == 0x15" identifier = (binary_expression "uVar3 == 0x15" identifier == number_literal)) ;) (if_statement "if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15))" ( (binary_expression "(0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)" (parenthesized_expression "(0x15 < uVar3)" ( (binary_expression "0x15 < uVar3" number_literal < identifier) )) || (parenthesized_expression "(bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)" ( (comma_expression "bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15" (assignment_expression "bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0" identifier = (binary_expression "(0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0" (parenthesized_expression "(0x3020c2UL >> (uVar14 & 0x3f) & 1)" ( (binary_expression "0x3020c2UL >> (uVar14 & 0x3f) & 1" (binary_expression "0x3020c2UL >> (uVar14 & 0x3f)" number_literal >> (parenthesized_expression "(uVar14 & 0x3f)" ( (binary_expression "uVar14 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal)) , (unary_expression "!bVar15" ! identifier)) ))) )) (compound_statement "{\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }" { (expression_statement "lVar10 = 10;" (assignment_expression "lVar10 = 10" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".eh_frame";" (assignment_expression "pbVar13 = (byte *)".eh_frame"" identifier = (cast_expression "(byte *)".eh_frame"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".eh_frame"" " string_content "))) ;) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);" do (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }" { (expression_statement "lVar10 = 7;" (assignment_expression "lVar10 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".ctors";" (assignment_expression "pbVar13 = (byte *)".ctors"" identifier = (cast_expression "(byte *)".ctors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors"" " string_content "))) ;) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar16 && !bVar15) == bVar16;" (assignment_expression "bVar15 = (!bVar16 && !bVar15) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }" { (expression_statement "lVar10 = 7;" (assignment_expression "lVar10 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".dtors";" (assignment_expression "pbVar13 = (byte *)".dtors"" identifier = (cast_expression "(byte *)".dtors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors"" " string_content "))) ;) (do_statement "do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);" do (compound_statement "{\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar18 && !bVar15) == bVar18;" (assignment_expression "bVar15 = (!bVar18 && !bVar15) == bVar18" identifier = (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" ( (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }" { (expression_statement "lVar10 = 5;" (assignment_expression "lVar10 = 5" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = &DAT_005710ea;" (assignment_expression "pbVar13 = &DAT_005710ea" identifier = (pointer_expression "&DAT_005710ea" & identifier)) ;) (do_statement "do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);" do (compound_statement "{\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }" if (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" ( (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) != identifier) )) (compound_statement "{\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }" { (expression_statement "pbVar12 = (byte *)((long)local_40[0] + 0xca);" (assignment_expression "pbVar12 = (byte *)((long)local_40[0] + 0xca)" identifier = (cast_expression "(byte *)((long)local_40[0] + 0xca)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40[0] + 0xca)" ( (binary_expression "(long)local_40[0] + 0xca" (cast_expression "(long)local_40[0]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "*pbVar12 = *pbVar12 | 0x40;" (assignment_expression "*pbVar12 = *pbVar12 | 0x40" (pointer_expression "*pbVar12" * identifier) = (binary_expression "*pbVar12 | 0x40" (pointer_expression "*pbVar12" * identifier) | number_literal)) ;) (expression_statement "bVar18 = *pbVar12 == 0;" (assignment_expression "bVar18 = *pbVar12 == 0" identifier = (binary_expression "*pbVar12 == 0" (pointer_expression "*pbVar12" * identifier) == number_literal)) ;) (expression_statement "lVar10 = 0xc;" (assignment_expression "lVar10 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".debug_info";" (assignment_expression "pbVar13 = (byte *)".debug_info"" identifier = (cast_expression "(byte *)".debug_info"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_info"" " string_content "))) ;) (do_statement "do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);" do (compound_statement "{\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }" { (expression_statement "puVar5 = (undefined8 *)FUN_0049cb70(0x10);" (assignment_expression "puVar5 = (undefined8 *)FUN_0049cb70(0x10)" identifier = (cast_expression "(undefined8 *)FUN_0049cb70(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb70(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*puVar5 = &DAT_00672c10;" (assignment_expression "*puVar5 = &DAT_00672c10" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&DAT_00672c10" & identifier)) ;) (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }" if (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }" { comment comment (expression_statement "FUN_00352af0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);" (assignment_expression "uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" identifier = (pointer_expression "*(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" * (cast_expression "(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" ( (binary_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((long)puVar5 + 9) = 0;" (assignment_expression "*(undefined1 *)((long)puVar5 + 9) = 0" (pointer_expression "*(undefined1 *)((long)puVar5 + 9)" * (cast_expression "(undefined1 *)((long)puVar5 + 9)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 9)" ( (binary_expression "(long)puVar5 + 9" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar5 + 1) = uVar17;" (assignment_expression "*(undefined1 *)(puVar5 + 1) = uVar17" (pointer_expression "*(undefined1 *)(puVar5 + 1)" * (cast_expression "(undefined1 *)(puVar5 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar5 = &PTR_FUN_00657840;" (assignment_expression "*puVar5 = &PTR_FUN_00657840" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&PTR_FUN_00657840" & identifier)) ;) }) (else_clause "else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }" else (compound_statement "{\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }" { (expression_statement "lVar10 = 0xd;" (assignment_expression "lVar10 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".debug_types";" (assignment_expression "pbVar13 = (byte *)".debug_types"" identifier = (cast_expression "(byte *)".debug_types"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_types"" " string_content "))) ;) (do_statement "do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);" do (compound_statement "{\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar16 && !bVar15) == bVar16;" (assignment_expression "bVar15 = (!bVar16 && !bVar15) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }" { (expression_statement "lVar10 = 0xc;" (assignment_expression "lVar10 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".debug_line";" (assignment_expression "pbVar12 = (byte *)".debug_line"" identifier = (cast_expression "(byte *)".debug_line"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_line"" " string_content "))) ;) (do_statement "do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);" do (compound_statement "{\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *param_2 < *pbVar12;" (assignment_expression "bVar18 = *param_2 < *pbVar12" identifier = (binary_expression "*param_2 < *pbVar12" (pointer_expression "*param_2" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *param_2 == *pbVar12;" (assignment_expression "bVar15 = *param_2 == *pbVar12" identifier = (binary_expression "*param_2 == *pbVar12" (pointer_expression "*param_2" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "param_2 = param_2 + (ulong)bVar20 * -2 + 1;" (assignment_expression "param_2 = param_2 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "param_2 + (ulong)bVar20 * -2 + 1" (binary_expression "param_2 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }" if (parenthesized_expression "((!bVar18 && !bVar15) == bVar18)" ( (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" ( (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (compound_statement "{\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }" { (expression_statement "puVar5 = (undefined8 *)FUN_0049cb70(0x10);" (assignment_expression "puVar5 = (undefined8 *)FUN_0049cb70(0x10)" identifier = (cast_expression "(undefined8 *)FUN_0049cb70(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb70(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*puVar5 = &DAT_00672c10;" (assignment_expression "*puVar5 = &DAT_00672c10" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&DAT_00672c10" & identifier)) ;) (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }" if (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }" { comment comment (expression_statement "FUN_00352af0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "*(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);" (assignment_expression "*(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" (pointer_expression "*(undefined1 *)(puVar5 + 1)" * (cast_expression "(undefined1 *)(puVar5 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" * (cast_expression "(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" ( (binary_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*puVar5 = &PTR_FUN_00657870;" (assignment_expression "*puVar5 = &PTR_FUN_00657870" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&PTR_FUN_00657870" & identifier)) ;) (expression_statement "puVar8[0x26] = puVar5;" (assignment_expression "puVar8[0x26] = puVar5" (subscript_expression "puVar8[0x26]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar6 = FUN_003c8700(puVar5);" (assignment_expression "uVar6 = FUN_003c8700(puVar5)" identifier = (call_expression "FUN_003c8700(puVar5)" identifier (argument_list "(puVar5)" ( identifier )))) ;) (expression_statement "puVar8[0x25] = uVar6;" (assignment_expression "puVar8[0x25] = uVar6" (subscript_expression "puVar8[0x25]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) })) (goto_statement "goto LAB_0037f3c1;" goto statement_identifier ;) })) (expression_statement "puVar5 = (undefined8 *)FUN_0049cb70(0x10);" (assignment_expression "puVar5 = (undefined8 *)FUN_0049cb70(0x10)" identifier = (cast_expression "(undefined8 *)FUN_0049cb70(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb70(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*puVar5 = &DAT_00672c10;" (assignment_expression "*puVar5 = &DAT_00672c10" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&DAT_00672c10" & identifier)) ;) (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }" if (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }" { comment comment (expression_statement "FUN_00352af0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);" (assignment_expression "uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" identifier = (pointer_expression "*(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" * (cast_expression "(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" ( (binary_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((long)puVar5 + 9) = 1;" (assignment_expression "*(undefined1 *)((long)puVar5 + 9) = 1" (pointer_expression "*(undefined1 *)((long)puVar5 + 9)" * (cast_expression "(undefined1 *)((long)puVar5 + 9)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 9)" ( (binary_expression "(long)puVar5 + 9" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar5 + 1) = uVar17;" (assignment_expression "*(undefined1 *)(puVar5 + 1) = uVar17" (pointer_expression "*(undefined1 *)(puVar5 + 1)" * (cast_expression "(undefined1 *)(puVar5 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar5 = &PTR_FUN_00657840;" (assignment_expression "*puVar5 = &PTR_FUN_00657840" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&PTR_FUN_00657840" & identifier)) ;) }))) (expression_statement "puVar8[0x26] = puVar5;" (assignment_expression "puVar8[0x26] = puVar5" (subscript_expression "puVar8[0x26]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar6 = FUN_003c86f0(puVar5);" (assignment_expression "uVar6 = FUN_003c86f0(puVar5)" identifier = (call_expression "FUN_003c86f0(puVar5)" identifier (argument_list "(puVar5)" ( identifier )))) ;) (expression_statement "puVar8[0x25] = uVar6;" (assignment_expression "puVar8[0x25] = uVar6" (subscript_expression "puVar8[0x25]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) })) })) })) })) })) })))) (labeled_statement "LAB_0037f3c1:\n  if (*(char *)(param_1 + 0x369) != '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }" statement_identifier : (if_statement "if (*(char *)(param_1 + 0x369) != '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x369) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x369) != '\0'" (pointer_expression "*(char *)(param_1 + 0x369)" * (cast_expression "(char *)(param_1 + 0x369)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x369)" ( (binary_expression "param_1 + 0x369" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }" { (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }" if (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }" { (labeled_statement "LAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/parameters.h",0x69,"target");" statement_identifier : comment (expression_statement "FUN_00352af0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;)) })) (expression_statement "FUN_0037f0b0(param_1);" (call_expression "FUN_0037f0b0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) }))) (return_statement "return puVar8;" return identifier ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* WARNING: Struct "Output_fill_debug_info": ignoring overlapping field "is_debug_types_" */\n/* DWARF original prototype: Output_section * make_output_section(Layout * this, char * name,\n   Elf_Word type, Elf_Xword flags, Output_section_order order, bool is_relro) */\n\nOutput_section * __thiscall\ngold::Layout::make_output_section\n          (Layout *this,char *name,Elf_Word type,Elf_Xword flags,Output_section_order order,\n          bool is_relro)\n\n{\n  undefined1 *puVar1;\n  _Rb_tree_header *p_Var2;\n  General_options *pGVar3;\n  Target *pTVar4;\n  Script_options *pSVar5;\n  Parameters *pPVar6;\n  int iVar7;\n  Output_section_order OVar8;\n  undefined4 extraout_var;\n  Output_fill *pOVar9;\n  size_t sVar10;\n  size_t sVar11;\n  Output_section *pOVar12;\n  Output_reduced_debug_abbrev_section *pOVar13;\n  Output_reduced_debug_info_section *pOVar14;\n  long lVar15;\n  byte *pbVar16;\n  iterator __position;\n  byte *pbVar17;\n  ulong uVar18;\n  bool bVar19;\n  bool bVar20;\n  undefined1 uVar21;\n  bool bVar22;\n  undefined1 uVar23;\n  byte bVar24;\n  bool local_59;\n  Output_section *os;\n  \n  bVar24 = 0;\n  uVar18 = (ulong)order;\n  if ((flags & 2) != 0) goto LAB_0037f230;\n  pGVar3 = parameters->options_;\n  bVar19 = false;\n  bVar22 = pGVar3 == (General_options *)0x0;\n  if (bVar22) goto LAB_0037f97a;\n  lVar15 = 5;\n  pbVar16 = (byte *)(pGVar3->compress_debug_sections_).value;\n  pbVar17 = (byte *)0x57596e;\n  do {\n    if (lVar15 == 0) break;\n    lVar15 = lVar15 + -1;\n    bVar19 = *pbVar16 < *pbVar17;\n    bVar22 = *pbVar16 == *pbVar17;\n    pbVar16 = pbVar16 + 1;\n    pbVar17 = pbVar17 + 1;\n  } while (bVar22);\n  bVar20 = false;\n  bVar19 = (!bVar19 && !bVar22) == bVar19;\n  if (bVar19) {\nLAB_0037f1e5:\n    bVar19 = false;\n    bVar22 = (pGVar3->strip_debug_non_line_).value == false;\n    if (bVar22) {\nLAB_0037f230:\n      bVar19 = type == 0;\n      bVar22 = type == 1;\n      if (bVar22) {\n        lVar15 = 0xb;\n        pbVar16 = (byte *)".init_array";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (bVar19) {\n          type = 0xe;\n        }\n        else {\n          lVar15 = 0xe;\n          pbVar16 = (byte *)".preinit_array";\n          pbVar17 = (byte *)name;\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (bVar19);\n          bVar22 = false;\n          bVar19 = (!bVar20 && !bVar19) == bVar20;\n          if (bVar19) {\n            type = 0x10;\n          }\n          else {\n            lVar15 = 0xb;\n            pbVar16 = (byte *)".fini_array";\n            pbVar17 = (byte *)name;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);\n            if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }\n          }\n        }\n      }\n      pTVar4 = parameters->target_;\n      if (pTVar4 == (Target *)0x0) goto LAB_0037fb03;\n      iVar7 = (*pTVar4->_vptr_Target[0x1b])(pTVar4,name,(ulong)type,flags);\n      os = (Output_section *)CONCAT44(extraout_var,iVar7);\n    }\n    else {\n      lVar15 = 0xe;\n      pbVar16 = (byte *)".debug_abbrev";\n      pbVar17 = (byte *)name;\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + 1;\n        pbVar17 = pbVar17 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (bVar19) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\n        (pOVar13->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_abbrev_section_006752b8;\n        p_Var2 = &(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =\n             &p_Var2->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var2->_M_header;\n        pOVar14 = this->debug_info_;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color = _S_red;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent =\n             (_Base_ptr)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count = 0;\n        pOVar13->sized_ = false;\n        pOVar13->abbrev_count_ = 0;\n        pOVar13->failed_ = false;\n        puVar1 = &(pOVar13->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_abbrev_ = pOVar13;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        lVar15 = 0xc;\n        pbVar16 = (byte *)".debug_info";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar19);\n        if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f230;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_info_section_00675370;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        pOVar14->failed_ = false;\n        puVar1 = &(pOVar14->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_info_ = pOVar14;\n        os = (Output_section *)pOVar14;\n        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n    }\n  }\n  else {\n    lVar15 = 6;\n    pbVar16 = &DAT_00533552;\n    pbVar17 = (byte *)name;\n    do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      bVar20 = *pbVar16 < *pbVar17;\n      bVar19 = *pbVar16 == *pbVar17;\n      pbVar16 = pbVar16 + 1;\n      pbVar17 = pbVar17 + 1;\n    } while (bVar19);\n    if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f1e5;\n    pOVar12 = (Output_section *)operator_new(0x178);\n                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */\n    Output_section::Output_section(pOVar12,name,type,flags);\n    (pOVar12->super_Output_data)._vptr_Output_data =\n         (_func_int_varargs **)&PTR__Output_compressed_section_00675900;\n    pOVar12[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)pGVar3;\n    pOVar12[1].super_Output_data.data_size_ = (off_t)&pOVar12[1].super_Output_data.field_0x20;\n    pOVar12[1].super_Output_data.offset_ = 0;\n    pOVar12[1].super_Output_data.field_0x20 = 0;\n    pOVar12->field_0xc8 = pOVar12->field_0xc8 | 0x30;\n    os = pOVar12;\n  }\n  pOVar12 = os;\n  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    if (parameters->options_ == (General_options *)0x0) goto LAB_0037f97a;\n    local_59 = (parameters->options_->relro_).value;\n    if ((local_59 == false) || (((uint)flags & 3) != 3)) goto LAB_0037f273;\n    if (type == 1) {\n      bVar19 = false;\n      bVar22 = (flags & 0x400) == 0;\n      if (!bVar22) goto LAB_0037f278;\n      lVar15 = 0xd;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".data.rel.ro";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (bVar19) goto LAB_0037f278;\n      lVar15 = 0x13;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);\n      bVar22 = false;\n      bVar19 = (!bVar20 && !bVar19) == bVar20;\n      if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar20 = false;\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if (((!bVar20 && !bVar19) != bVar20) && (iVar7 = strcmp(name,".jcr"), iVar7 != 0))\n          goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < type - 0xe) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = false;\n    }\n    pOVar12->field_0xc9 = pOVar12->field_0xc9 | 0x20;\n  }\n  else {\nLAB_0037f273:\n    local_59 = is_relro;\n    if (is_relro) goto LAB_0037f278;\n  }\n  if ((order == ORDER_INVALID) && ((flags & 2) != 0)) {\n    OVar8 = default_section_order(this,pOVar12,local_59);\n    uVar18 = (ulong)OVar8;\n    pOVar12 = os;\n  }\n  pPVar6 = parameters;\n  OVar8 = (Output_section_order)uVar18;\n  pOVar12->order_ = OVar8;\n  pTVar4 = pPVar6->target_;\n  if (pTVar4 == (Target *)0x0) goto LAB_0037fb03;\n  if (pTVar4->_vptr_Target[3] == Target::do_new_output_section) {\n    __position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage) goto LAB_0037f938;\nLAB_0037f2d9:\n    *__position._M_current = os;\n    (this->section_list_).\n    super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n    _M_finish = __position._M_current + 1;\n  }\n  else {\n    (*pTVar4->_vptr_Target[3])(pTVar4,pOVar12);\n    __position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current !=\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage) goto LAB_0037f2d9;\nLAB_0037f938:\n    std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n    _M_realloc_insert<gold::Output_section*_const&>(&this->section_list_,__position,&os);\n  }\n  pOVar12 = os;\n  pSVar5 = this->script_options_;\n  pGVar3 = parameters->options_;\n  if ((pSVar5->script_sections_).saw_sections_clause_ == false) {\n    if (pGVar3 == (General_options *)0x0) {\nLAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar19 = false;\n    bVar22 = (pGVar3->relocatable_).value == false;\n    if (!bVar22) goto LAB_0037f347;\n    lVar15 = 0xc;\n    pbVar16 = (byte *)name;\n    pbVar17 = (byte *)".init_array";\n    do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      bVar19 = *pbVar16 < *pbVar17;\n      bVar22 = *pbVar16 == *pbVar17;\n      pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n      pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n    } while (bVar22);\n    bVar20 = false;\n    bVar19 = (!bVar19 && !bVar22) == bVar19;\n    if (bVar19) {\nLAB_0037f340:\n      os->field_0xc9 = os->field_0xc9 | 4;\n    }\n    else {\n      lVar15 = 0xc;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".fini_array";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);\n      if ((!bVar20 && !bVar19) == bVar20) goto LAB_0037f340;\n      bVar19 = false;\n      bVar22 = (pGVar3->ctors_in_init_array_).value == false;\n      if (bVar22) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar19 = (pGVar3->text_reorder_).value == false;\n    if (((!bVar19) && (bVar19 = (pSVar5->script_sections_).saw_sections_clause_ == false, bVar19))\n       && (bVar19 = this->section_ordering_specified_ == false, bVar19)) {\n      bVar22 = false;\n      bVar19 = (pGVar3->relocatable_).value == false;\n      if (bVar19) {\n        lVar15 = 6;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".text";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (bVar19) {\n          puVar1 = &os->field_0xc9;\n          *puVar1 = *puVar1 | 4;\n          bVar19 = *puVar1 == '\0';\n        }\n      }\n    }\n  }\n  else {\n    bVar19 = pGVar3 == (General_options *)0x0;\n    if (bVar19) goto LAB_0037f97a;\n  }\n  bVar22 = false;\n  lVar15 = 5;\n  pbVar16 = (byte *)(pGVar3->sort_section_).value;\n  pbVar17 = (byte *)0x575186;\n  do {\n    if (lVar15 == 0) break;\n    lVar15 = lVar15 + -1;\n    bVar22 = *pbVar16 < *pbVar17;\n    bVar19 = *pbVar16 == *pbVar17;\n    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n    pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n  } while (bVar19);\n  if ((!bVar22 && !bVar19) == bVar22) {\n    os->field_0xc9 = os->field_0xc9 | 8;\n  }\n  if (type == 3) {\n    bVar19 = false;\n    bVar22 = this->have_stabstr_section_ == false;\n    if (bVar22) {\n      lVar15 = 5;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".stab";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      uVar21 = 0;\n      uVar23 = (!bVar19 && !bVar22) == bVar19;\n      if ((bool)uVar23) {\n        sVar11 = strlen(name);\n        lVar15 = 4;\n        pbVar16 = (byte *)(name + (sVar11 - 3));\n        pbVar17 = (byte *)0x579a2e;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          uVar21 = *pbVar16 < *pbVar17;\n          uVar23 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while ((bool)uVar23);\n        if ((!(bool)uVar21 && !(bool)uVar23) == (bool)uVar21) {\n          this->have_stabstr_section_ = true;\n        }\n      }\n    }\n  }\n  else if ((type == 1) || (type == 8)) {\n    bVar19 = OVar8 < ORDER_NON_RELRO_FIRST;\n    bVar22 = OVar8 == ORDER_NON_RELRO_FIRST;\n    if ((ORDER_NON_RELRO_FIRST < OVar8) ||\n       (bVar19 = (0x3020c2UL >> (uVar18 & 0x3f) & 1) != 0, !bVar19)) {\n      lVar15 = 10;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".eh_frame";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar22 = false;\n        bVar19 = (!bVar20 && !bVar19) == bVar20;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar22 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          bVar20 = false;\n          bVar19 = (!bVar22 && !bVar19) == bVar22;\n          if (!bVar19) {\n            lVar15 = 5;\n            pbVar16 = (byte *)name;\n            pbVar17 = &DAT_005710ea;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);\n            if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0037f3c1:\n  if (this->sections_are_attached_ != false) {\n    if (parameters->target_ == (Target *)0x0) {\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n    attach_section_to_segment(this,parameters->target_,pOVar12);\n    pOVar12 = os;\n  }\n  return pOVar12;\n}\n\n" comment comment comment comment (ERROR "Output_section * __thiscall\ngold::Layout::make_output_section\n          (Layout *this,char *name,Elf_Word type,Elf_Xword flags,Output_section_order order,\n          bool is_relro)" (binary_expression "Output_section * __thiscall\ngold::Layout::make_output_section\n          (Layout *this,char *name,Elf_Word type,Elf_Xword flags,Output_section_order order,\n          bool is_relro)" identifier * (call_expression "__thiscall\ngold::Layout::make_output_section\n          (Layout *this,char *name,Elf_Word type,Elf_Xword flags,Output_section_order order,\n          bool is_relro)" identifier (ERROR "gold::Layout::make_output_section" identifier : : identifier : : identifier) (argument_list "(Layout *this,char *name,Elf_Word type,Elf_Xword flags,Output_section_order order,\n          bool is_relro)" ( (binary_expression "Layout *this" identifier * identifier) , (binary_expression "char *name" identifier * identifier) , identifier (ERROR "type" identifier) , identifier (ERROR "flags" identifier) , identifier (ERROR "order" identifier) , (ERROR "bool" identifier) identifier ))))) (compound_statement "{\n  undefined1 *puVar1;\n  _Rb_tree_header *p_Var2;\n  General_options *pGVar3;\n  Target *pTVar4;\n  Script_options *pSVar5;\n  Parameters *pPVar6;\n  int iVar7;\n  Output_section_order OVar8;\n  undefined4 extraout_var;\n  Output_fill *pOVar9;\n  size_t sVar10;\n  size_t sVar11;\n  Output_section *pOVar12;\n  Output_reduced_debug_abbrev_section *pOVar13;\n  Output_reduced_debug_info_section *pOVar14;\n  long lVar15;\n  byte *pbVar16;\n  iterator __position;\n  byte *pbVar17;\n  ulong uVar18;\n  bool bVar19;\n  bool bVar20;\n  undefined1 uVar21;\n  bool bVar22;\n  undefined1 uVar23;\n  byte bVar24;\n  bool local_59;\n  Output_section *os;\n  \n  bVar24 = 0;\n  uVar18 = (ulong)order;\n  if ((flags & 2) != 0) goto LAB_0037f230;\n  pGVar3 = parameters->options_;\n  bVar19 = false;\n  bVar22 = pGVar3 == (General_options *)0x0;\n  if (bVar22) goto LAB_0037f97a;\n  lVar15 = 5;\n  pbVar16 = (byte *)(pGVar3->compress_debug_sections_).value;\n  pbVar17 = (byte *)0x57596e;\n  do {\n    if (lVar15 == 0) break;\n    lVar15 = lVar15 + -1;\n    bVar19 = *pbVar16 < *pbVar17;\n    bVar22 = *pbVar16 == *pbVar17;\n    pbVar16 = pbVar16 + 1;\n    pbVar17 = pbVar17 + 1;\n  } while (bVar22);\n  bVar20 = false;\n  bVar19 = (!bVar19 && !bVar22) == bVar19;\n  if (bVar19) {\nLAB_0037f1e5:\n    bVar19 = false;\n    bVar22 = (pGVar3->strip_debug_non_line_).value == false;\n    if (bVar22) {\nLAB_0037f230:\n      bVar19 = type == 0;\n      bVar22 = type == 1;\n      if (bVar22) {\n        lVar15 = 0xb;\n        pbVar16 = (byte *)".init_array";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (bVar19) {\n          type = 0xe;\n        }\n        else {\n          lVar15 = 0xe;\n          pbVar16 = (byte *)".preinit_array";\n          pbVar17 = (byte *)name;\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (bVar19);\n          bVar22 = false;\n          bVar19 = (!bVar20 && !bVar19) == bVar20;\n          if (bVar19) {\n            type = 0x10;\n          }\n          else {\n            lVar15 = 0xb;\n            pbVar16 = (byte *)".fini_array";\n            pbVar17 = (byte *)name;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);\n            if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }\n          }\n        }\n      }\n      pTVar4 = parameters->target_;\n      if (pTVar4 == (Target *)0x0) goto LAB_0037fb03;\n      iVar7 = (*pTVar4->_vptr_Target[0x1b])(pTVar4,name,(ulong)type,flags);\n      os = (Output_section *)CONCAT44(extraout_var,iVar7);\n    }\n    else {\n      lVar15 = 0xe;\n      pbVar16 = (byte *)".debug_abbrev";\n      pbVar17 = (byte *)name;\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + 1;\n        pbVar17 = pbVar17 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (bVar19) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\n        (pOVar13->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_abbrev_section_006752b8;\n        p_Var2 = &(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =\n             &p_Var2->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var2->_M_header;\n        pOVar14 = this->debug_info_;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color = _S_red;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent =\n             (_Base_ptr)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count = 0;\n        pOVar13->sized_ = false;\n        pOVar13->abbrev_count_ = 0;\n        pOVar13->failed_ = false;\n        puVar1 = &(pOVar13->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_abbrev_ = pOVar13;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        lVar15 = 0xc;\n        pbVar16 = (byte *)".debug_info";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar19);\n        if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f230;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_info_section_00675370;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        pOVar14->failed_ = false;\n        puVar1 = &(pOVar14->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_info_ = pOVar14;\n        os = (Output_section *)pOVar14;\n        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n    }\n  }\n  else {\n    lVar15 = 6;\n    pbVar16 = &DAT_00533552;\n    pbVar17 = (byte *)name;\n    do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      bVar20 = *pbVar16 < *pbVar17;\n      bVar19 = *pbVar16 == *pbVar17;\n      pbVar16 = pbVar16 + 1;\n      pbVar17 = pbVar17 + 1;\n    } while (bVar19);\n    if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f1e5;\n    pOVar12 = (Output_section *)operator_new(0x178);\n                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */\n    Output_section::Output_section(pOVar12,name,type,flags);\n    (pOVar12->super_Output_data)._vptr_Output_data =\n         (_func_int_varargs **)&PTR__Output_compressed_section_00675900;\n    pOVar12[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)pGVar3;\n    pOVar12[1].super_Output_data.data_size_ = (off_t)&pOVar12[1].super_Output_data.field_0x20;\n    pOVar12[1].super_Output_data.offset_ = 0;\n    pOVar12[1].super_Output_data.field_0x20 = 0;\n    pOVar12->field_0xc8 = pOVar12->field_0xc8 | 0x30;\n    os = pOVar12;\n  }\n  pOVar12 = os;\n  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    if (parameters->options_ == (General_options *)0x0) goto LAB_0037f97a;\n    local_59 = (parameters->options_->relro_).value;\n    if ((local_59 == false) || (((uint)flags & 3) != 3)) goto LAB_0037f273;\n    if (type == 1) {\n      bVar19 = false;\n      bVar22 = (flags & 0x400) == 0;\n      if (!bVar22) goto LAB_0037f278;\n      lVar15 = 0xd;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".data.rel.ro";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (bVar19) goto LAB_0037f278;\n      lVar15 = 0x13;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);\n      bVar22 = false;\n      bVar19 = (!bVar20 && !bVar19) == bVar20;\n      if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar20 = false;\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if (((!bVar20 && !bVar19) != bVar20) && (iVar7 = strcmp(name,".jcr"), iVar7 != 0))\n          goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < type - 0xe) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = false;\n    }\n    pOVar12->field_0xc9 = pOVar12->field_0xc9 | 0x20;\n  }\n  else {\nLAB_0037f273:\n    local_59 = is_relro;\n    if (is_relro) goto LAB_0037f278;\n  }\n  if ((order == ORDER_INVALID) && ((flags & 2) != 0)) {\n    OVar8 = default_section_order(this,pOVar12,local_59);\n    uVar18 = (ulong)OVar8;\n    pOVar12 = os;\n  }\n  pPVar6 = parameters;\n  OVar8 = (Output_section_order)uVar18;\n  pOVar12->order_ = OVar8;\n  pTVar4 = pPVar6->target_;\n  if (pTVar4 == (Target *)0x0) goto LAB_0037fb03;\n  if (pTVar4->_vptr_Target[3] == Target::do_new_output_section) {\n    __position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage) goto LAB_0037f938;\nLAB_0037f2d9:\n    *__position._M_current = os;\n    (this->section_list_).\n    super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n    _M_finish = __position._M_current + 1;\n  }\n  else {\n    (*pTVar4->_vptr_Target[3])(pTVar4,pOVar12);\n    __position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current !=\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage) goto LAB_0037f2d9;\nLAB_0037f938:\n    std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n    _M_realloc_insert<gold::Output_section*_const&>(&this->section_list_,__position,&os);\n  }\n  pOVar12 = os;\n  pSVar5 = this->script_options_;\n  pGVar3 = parameters->options_;\n  if ((pSVar5->script_sections_).saw_sections_clause_ == false) {\n    if (pGVar3 == (General_options *)0x0) {\nLAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar19 = false;\n    bVar22 = (pGVar3->relocatable_).value == false;\n    if (!bVar22) goto LAB_0037f347;\n    lVar15 = 0xc;\n    pbVar16 = (byte *)name;\n    pbVar17 = (byte *)".init_array";\n    do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      bVar19 = *pbVar16 < *pbVar17;\n      bVar22 = *pbVar16 == *pbVar17;\n      pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n      pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n    } while (bVar22);\n    bVar20 = false;\n    bVar19 = (!bVar19 && !bVar22) == bVar19;\n    if (bVar19) {\nLAB_0037f340:\n      os->field_0xc9 = os->field_0xc9 | 4;\n    }\n    else {\n      lVar15 = 0xc;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".fini_array";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);\n      if ((!bVar20 && !bVar19) == bVar20) goto LAB_0037f340;\n      bVar19 = false;\n      bVar22 = (pGVar3->ctors_in_init_array_).value == false;\n      if (bVar22) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar19 = (pGVar3->text_reorder_).value == false;\n    if (((!bVar19) && (bVar19 = (pSVar5->script_sections_).saw_sections_clause_ == false, bVar19))\n       && (bVar19 = this->section_ordering_specified_ == false, bVar19)) {\n      bVar22 = false;\n      bVar19 = (pGVar3->relocatable_).value == false;\n      if (bVar19) {\n        lVar15 = 6;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".text";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (bVar19) {\n          puVar1 = &os->field_0xc9;\n          *puVar1 = *puVar1 | 4;\n          bVar19 = *puVar1 == '\0';\n        }\n      }\n    }\n  }\n  else {\n    bVar19 = pGVar3 == (General_options *)0x0;\n    if (bVar19) goto LAB_0037f97a;\n  }\n  bVar22 = false;\n  lVar15 = 5;\n  pbVar16 = (byte *)(pGVar3->sort_section_).value;\n  pbVar17 = (byte *)0x575186;\n  do {\n    if (lVar15 == 0) break;\n    lVar15 = lVar15 + -1;\n    bVar22 = *pbVar16 < *pbVar17;\n    bVar19 = *pbVar16 == *pbVar17;\n    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n    pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n  } while (bVar19);\n  if ((!bVar22 && !bVar19) == bVar22) {\n    os->field_0xc9 = os->field_0xc9 | 8;\n  }\n  if (type == 3) {\n    bVar19 = false;\n    bVar22 = this->have_stabstr_section_ == false;\n    if (bVar22) {\n      lVar15 = 5;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".stab";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      uVar21 = 0;\n      uVar23 = (!bVar19 && !bVar22) == bVar19;\n      if ((bool)uVar23) {\n        sVar11 = strlen(name);\n        lVar15 = 4;\n        pbVar16 = (byte *)(name + (sVar11 - 3));\n        pbVar17 = (byte *)0x579a2e;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          uVar21 = *pbVar16 < *pbVar17;\n          uVar23 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while ((bool)uVar23);\n        if ((!(bool)uVar21 && !(bool)uVar23) == (bool)uVar21) {\n          this->have_stabstr_section_ = true;\n        }\n      }\n    }\n  }\n  else if ((type == 1) || (type == 8)) {\n    bVar19 = OVar8 < ORDER_NON_RELRO_FIRST;\n    bVar22 = OVar8 == ORDER_NON_RELRO_FIRST;\n    if ((ORDER_NON_RELRO_FIRST < OVar8) ||\n       (bVar19 = (0x3020c2UL >> (uVar18 & 0x3f) & 1) != 0, !bVar19)) {\n      lVar15 = 10;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".eh_frame";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar22 = false;\n        bVar19 = (!bVar20 && !bVar19) == bVar20;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar22 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          bVar20 = false;\n          bVar19 = (!bVar22 && !bVar19) == bVar22;\n          if (!bVar19) {\n            lVar15 = 5;\n            pbVar16 = (byte *)name;\n            pbVar17 = &DAT_005710ea;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);\n            if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0037f3c1:\n  if (this->sections_are_attached_ != false) {\n    if (parameters->target_ == (Target *)0x0) {\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n    attach_section_to_segment(this,parameters->target_,pOVar12);\n    pOVar12 = os;\n  }\n  return pOVar12;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "_Rb_tree_header *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "General_options *pGVar3;" type_identifier (pointer_declarator "*pGVar3" * identifier) ;) (declaration "Target *pTVar4;" type_identifier (pointer_declarator "*pTVar4" * identifier) ;) (declaration "Script_options *pSVar5;" type_identifier (pointer_declarator "*pSVar5" * identifier) ;) (declaration "Parameters *pPVar6;" type_identifier (pointer_declarator "*pPVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "Output_section_order OVar8;" type_identifier identifier ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (declaration "Output_fill *pOVar9;" type_identifier (pointer_declarator "*pOVar9" * identifier) ;) (declaration "size_t sVar10;" primitive_type identifier ;) (declaration "size_t sVar11;" primitive_type identifier ;) (declaration "Output_section *pOVar12;" type_identifier (pointer_declarator "*pOVar12" * identifier) ;) (declaration "Output_reduced_debug_abbrev_section *pOVar13;" type_identifier (pointer_declarator "*pOVar13" * identifier) ;) (declaration "Output_reduced_debug_info_section *pOVar14;" type_identifier (pointer_declarator "*pOVar14" * identifier) ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "ulong uVar18;" type_identifier identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "undefined1 uVar21;" type_identifier identifier ;) (declaration "bool bVar22;" primitive_type identifier ;) (declaration "undefined1 uVar23;" type_identifier identifier ;) (declaration "byte bVar24;" type_identifier identifier ;) (declaration "bool local_59;" primitive_type identifier ;) (declaration "Output_section *os;" type_identifier (pointer_declarator "*os" * identifier) ;) (expression_statement "bVar24 = 0;" (assignment_expression "bVar24 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = (ulong)order;" (assignment_expression "uVar18 = (ulong)order" identifier = (cast_expression "(ulong)order" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if ((flags & 2) != 0) goto LAB_0037f230;" if (parenthesized_expression "((flags & 2) != 0)" ( (binary_expression "(flags & 2) != 0" (parenthesized_expression "(flags & 2)" ( (binary_expression "flags & 2" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0037f230;" goto statement_identifier ;)) (expression_statement "pGVar3 = parameters->options_;" (assignment_expression "pGVar3 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "bVar22 = pGVar3 == (General_options *)0x0;" (assignment_expression "bVar22 = pGVar3 == (General_options *)0x0" identifier = (binary_expression "pGVar3 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (bVar22) goto LAB_0037f97a;" if (parenthesized_expression "(bVar22)" ( identifier )) (goto_statement "goto LAB_0037f97a;" goto statement_identifier ;)) (expression_statement "lVar15 = 5;" (assignment_expression "lVar15 = 5" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)(pGVar3->compress_debug_sections_).value;" (assignment_expression "pbVar16 = (byte *)(pGVar3->compress_debug_sections_).value" identifier = (cast_expression "(byte *)(pGVar3->compress_debug_sections_).value" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(pGVar3->compress_debug_sections_).value" (parenthesized_expression "(pGVar3->compress_debug_sections_)" ( (field_expression "pGVar3->compress_debug_sections_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pbVar17 = (byte *)0x57596e;" (assignment_expression "pbVar17 = (byte *)0x57596e" identifier = (cast_expression "(byte *)0x57596e" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if (lVar15 == 0) break;\n    lVar15 = lVar15 + -1;\n    bVar19 = *pbVar16 < *pbVar17;\n    bVar22 = *pbVar16 == *pbVar17;\n    pbVar16 = pbVar16 + 1;\n    pbVar17 = pbVar17 + 1;\n  } while (bVar22);" do (compound_statement "{\n    if (lVar15 == 0) break;\n    lVar15 = lVar15 + -1;\n    bVar19 = *pbVar16 < *pbVar17;\n    bVar22 = *pbVar16 == *pbVar17;\n    pbVar16 = pbVar16 + 1;\n    pbVar17 = pbVar17 + 1;\n  }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar19 = *pbVar16 < *pbVar17;" (assignment_expression "bVar19 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar22 = *pbVar16 == *pbVar17;" (assignment_expression "bVar22 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + 1;" (assignment_expression "pbVar16 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar22)" ( identifier )) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar19 = (!bVar19 && !bVar22) == bVar19;" (assignment_expression "bVar19 = (!bVar19 && !bVar22) == bVar19" identifier = (binary_expression "(!bVar19 && !bVar22) == bVar19" (parenthesized_expression "(!bVar19 && !bVar22)" ( (binary_expression "!bVar19 && !bVar22" (unary_expression "!bVar19" ! identifier) && (unary_expression "!bVar22" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar19) {\nLAB_0037f1e5:\n    bVar19 = false;\n    bVar22 = (pGVar3->strip_debug_non_line_).value == false;\n    if (bVar22) {\nLAB_0037f230:\n      bVar19 = type == 0;\n      bVar22 = type == 1;\n      if (bVar22) {\n        lVar15 = 0xb;\n        pbVar16 = (byte *)".init_array";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (bVar19) {\n          type = 0xe;\n        }\n        else {\n          lVar15 = 0xe;\n          pbVar16 = (byte *)".preinit_array";\n          pbVar17 = (byte *)name;\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (bVar19);\n          bVar22 = false;\n          bVar19 = (!bVar20 && !bVar19) == bVar20;\n          if (bVar19) {\n            type = 0x10;\n          }\n          else {\n            lVar15 = 0xb;\n            pbVar16 = (byte *)".fini_array";\n            pbVar17 = (byte *)name;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);\n            if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }\n          }\n        }\n      }\n      pTVar4 = parameters->target_;\n      if (pTVar4 == (Target *)0x0) goto LAB_0037fb03;\n      iVar7 = (*pTVar4->_vptr_Target[0x1b])(pTVar4,name,(ulong)type,flags);\n      os = (Output_section *)CONCAT44(extraout_var,iVar7);\n    }\n    else {\n      lVar15 = 0xe;\n      pbVar16 = (byte *)".debug_abbrev";\n      pbVar17 = (byte *)name;\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + 1;\n        pbVar17 = pbVar17 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (bVar19) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\n        (pOVar13->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_abbrev_section_006752b8;\n        p_Var2 = &(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =\n             &p_Var2->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var2->_M_header;\n        pOVar14 = this->debug_info_;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color = _S_red;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent =\n             (_Base_ptr)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count = 0;\n        pOVar13->sized_ = false;\n        pOVar13->abbrev_count_ = 0;\n        pOVar13->failed_ = false;\n        puVar1 = &(pOVar13->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_abbrev_ = pOVar13;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        lVar15 = 0xc;\n        pbVar16 = (byte *)".debug_info";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar19);\n        if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f230;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_info_section_00675370;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        pOVar14->failed_ = false;\n        puVar1 = &(pOVar14->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_info_ = pOVar14;\n        os = (Output_section *)pOVar14;\n        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n    }\n  }\n  else {\n    lVar15 = 6;\n    pbVar16 = &DAT_00533552;\n    pbVar17 = (byte *)name;\n    do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      bVar20 = *pbVar16 < *pbVar17;\n      bVar19 = *pbVar16 == *pbVar17;\n      pbVar16 = pbVar16 + 1;\n      pbVar17 = pbVar17 + 1;\n    } while (bVar19);\n    if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f1e5;\n    pOVar12 = (Output_section *)operator_new(0x178);\n                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */\n    Output_section::Output_section(pOVar12,name,type,flags);\n    (pOVar12->super_Output_data)._vptr_Output_data =\n         (_func_int_varargs **)&PTR__Output_compressed_section_00675900;\n    pOVar12[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)pGVar3;\n    pOVar12[1].super_Output_data.data_size_ = (off_t)&pOVar12[1].super_Output_data.field_0x20;\n    pOVar12[1].super_Output_data.offset_ = 0;\n    pOVar12[1].super_Output_data.field_0x20 = 0;\n    pOVar12->field_0xc8 = pOVar12->field_0xc8 | 0x30;\n    os = pOVar12;\n  }" if (parenthesized_expression "(bVar19)" ( identifier )) (compound_statement "{\nLAB_0037f1e5:\n    bVar19 = false;\n    bVar22 = (pGVar3->strip_debug_non_line_).value == false;\n    if (bVar22) {\nLAB_0037f230:\n      bVar19 = type == 0;\n      bVar22 = type == 1;\n      if (bVar22) {\n        lVar15 = 0xb;\n        pbVar16 = (byte *)".init_array";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (bVar19) {\n          type = 0xe;\n        }\n        else {\n          lVar15 = 0xe;\n          pbVar16 = (byte *)".preinit_array";\n          pbVar17 = (byte *)name;\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (bVar19);\n          bVar22 = false;\n          bVar19 = (!bVar20 && !bVar19) == bVar20;\n          if (bVar19) {\n            type = 0x10;\n          }\n          else {\n            lVar15 = 0xb;\n            pbVar16 = (byte *)".fini_array";\n            pbVar17 = (byte *)name;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);\n            if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }\n          }\n        }\n      }\n      pTVar4 = parameters->target_;\n      if (pTVar4 == (Target *)0x0) goto LAB_0037fb03;\n      iVar7 = (*pTVar4->_vptr_Target[0x1b])(pTVar4,name,(ulong)type,flags);\n      os = (Output_section *)CONCAT44(extraout_var,iVar7);\n    }\n    else {\n      lVar15 = 0xe;\n      pbVar16 = (byte *)".debug_abbrev";\n      pbVar17 = (byte *)name;\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + 1;\n        pbVar17 = pbVar17 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (bVar19) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\n        (pOVar13->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_abbrev_section_006752b8;\n        p_Var2 = &(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =\n             &p_Var2->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var2->_M_header;\n        pOVar14 = this->debug_info_;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color = _S_red;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent =\n             (_Base_ptr)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count = 0;\n        pOVar13->sized_ = false;\n        pOVar13->abbrev_count_ = 0;\n        pOVar13->failed_ = false;\n        puVar1 = &(pOVar13->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_abbrev_ = pOVar13;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        lVar15 = 0xc;\n        pbVar16 = (byte *)".debug_info";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar19);\n        if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f230;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_info_section_00675370;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        pOVar14->failed_ = false;\n        puVar1 = &(pOVar14->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_info_ = pOVar14;\n        os = (Output_section *)pOVar14;\n        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n    }\n  }" { (labeled_statement "LAB_0037f1e5:\n    bVar19 = false;" statement_identifier : (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;)) (expression_statement "bVar22 = (pGVar3->strip_debug_non_line_).value == false;" (assignment_expression "bVar22 = (pGVar3->strip_debug_non_line_).value == false" identifier = (binary_expression "(pGVar3->strip_debug_non_line_).value == false" (field_expression "(pGVar3->strip_debug_non_line_).value" (parenthesized_expression "(pGVar3->strip_debug_non_line_)" ( (field_expression "pGVar3->strip_debug_non_line_" identifier -> field_identifier) )) . field_identifier) == false)) ;) (if_statement "if (bVar22) {\nLAB_0037f230:\n      bVar19 = type == 0;\n      bVar22 = type == 1;\n      if (bVar22) {\n        lVar15 = 0xb;\n        pbVar16 = (byte *)".init_array";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (bVar19) {\n          type = 0xe;\n        }\n        else {\n          lVar15 = 0xe;\n          pbVar16 = (byte *)".preinit_array";\n          pbVar17 = (byte *)name;\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (bVar19);\n          bVar22 = false;\n          bVar19 = (!bVar20 && !bVar19) == bVar20;\n          if (bVar19) {\n            type = 0x10;\n          }\n          else {\n            lVar15 = 0xb;\n            pbVar16 = (byte *)".fini_array";\n            pbVar17 = (byte *)name;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);\n            if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }\n          }\n        }\n      }\n      pTVar4 = parameters->target_;\n      if (pTVar4 == (Target *)0x0) goto LAB_0037fb03;\n      iVar7 = (*pTVar4->_vptr_Target[0x1b])(pTVar4,name,(ulong)type,flags);\n      os = (Output_section *)CONCAT44(extraout_var,iVar7);\n    }\n    else {\n      lVar15 = 0xe;\n      pbVar16 = (byte *)".debug_abbrev";\n      pbVar17 = (byte *)name;\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + 1;\n        pbVar17 = pbVar17 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (bVar19) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\n        (pOVar13->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_abbrev_section_006752b8;\n        p_Var2 = &(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =\n             &p_Var2->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var2->_M_header;\n        pOVar14 = this->debug_info_;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color = _S_red;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent =\n             (_Base_ptr)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count = 0;\n        pOVar13->sized_ = false;\n        pOVar13->abbrev_count_ = 0;\n        pOVar13->failed_ = false;\n        puVar1 = &(pOVar13->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_abbrev_ = pOVar13;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        lVar15 = 0xc;\n        pbVar16 = (byte *)".debug_info";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar19);\n        if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f230;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_info_section_00675370;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        pOVar14->failed_ = false;\n        puVar1 = &(pOVar14->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_info_ = pOVar14;\n        os = (Output_section *)pOVar14;\n        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n    }" if (parenthesized_expression "(bVar22)" ( identifier )) (compound_statement "{\nLAB_0037f230:\n      bVar19 = type == 0;\n      bVar22 = type == 1;\n      if (bVar22) {\n        lVar15 = 0xb;\n        pbVar16 = (byte *)".init_array";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (bVar19) {\n          type = 0xe;\n        }\n        else {\n          lVar15 = 0xe;\n          pbVar16 = (byte *)".preinit_array";\n          pbVar17 = (byte *)name;\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (bVar19);\n          bVar22 = false;\n          bVar19 = (!bVar20 && !bVar19) == bVar20;\n          if (bVar19) {\n            type = 0x10;\n          }\n          else {\n            lVar15 = 0xb;\n            pbVar16 = (byte *)".fini_array";\n            pbVar17 = (byte *)name;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);\n            if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }\n          }\n        }\n      }\n      pTVar4 = parameters->target_;\n      if (pTVar4 == (Target *)0x0) goto LAB_0037fb03;\n      iVar7 = (*pTVar4->_vptr_Target[0x1b])(pTVar4,name,(ulong)type,flags);\n      os = (Output_section *)CONCAT44(extraout_var,iVar7);\n    }" { (labeled_statement "LAB_0037f230:\n      bVar19 = type == 0;" statement_identifier : (expression_statement "bVar19 = type == 0;" (assignment_expression "bVar19 = type == 0" identifier = (binary_expression "type == 0" identifier == number_literal)) ;)) (expression_statement "bVar22 = type == 1;" (assignment_expression "bVar22 = type == 1" identifier = (binary_expression "type == 1" identifier == number_literal)) ;) (if_statement "if (bVar22) {\n        lVar15 = 0xb;\n        pbVar16 = (byte *)".init_array";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (bVar19) {\n          type = 0xe;\n        }\n        else {\n          lVar15 = 0xe;\n          pbVar16 = (byte *)".preinit_array";\n          pbVar17 = (byte *)name;\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (bVar19);\n          bVar22 = false;\n          bVar19 = (!bVar20 && !bVar19) == bVar20;\n          if (bVar19) {\n            type = 0x10;\n          }\n          else {\n            lVar15 = 0xb;\n            pbVar16 = (byte *)".fini_array";\n            pbVar17 = (byte *)name;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);\n            if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(bVar22)" ( identifier )) (compound_statement "{\n        lVar15 = 0xb;\n        pbVar16 = (byte *)".init_array";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (bVar19) {\n          type = 0xe;\n        }\n        else {\n          lVar15 = 0xe;\n          pbVar16 = (byte *)".preinit_array";\n          pbVar17 = (byte *)name;\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (bVar19);\n          bVar22 = false;\n          bVar19 = (!bVar20 && !bVar19) == bVar20;\n          if (bVar19) {\n            type = 0x10;\n          }\n          else {\n            lVar15 = 0xb;\n            pbVar16 = (byte *)".fini_array";\n            pbVar17 = (byte *)name;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);\n            if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }\n          }\n        }\n      }" { (expression_statement "lVar15 = 0xb;" (assignment_expression "lVar15 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)".init_array";" (assignment_expression "pbVar16 = (byte *)".init_array"" identifier = (cast_expression "(byte *)".init_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".init_array"" " string_content "))) ;) (expression_statement "pbVar17 = (byte *)name;" (assignment_expression "pbVar17 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar22);" do (compound_statement "{\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar19 = *pbVar16 < *pbVar17;" (assignment_expression "bVar19 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar22 = *pbVar16 == *pbVar17;" (assignment_expression "bVar22 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + 1;" (assignment_expression "pbVar16 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar22)" ( identifier )) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar19 = (!bVar19 && !bVar22) == bVar19;" (assignment_expression "bVar19 = (!bVar19 && !bVar22) == bVar19" identifier = (binary_expression "(!bVar19 && !bVar22) == bVar19" (parenthesized_expression "(!bVar19 && !bVar22)" ( (binary_expression "!bVar19 && !bVar22" (unary_expression "!bVar19" ! identifier) && (unary_expression "!bVar22" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar19) {\n          type = 0xe;\n        }\n        else {\n          lVar15 = 0xe;\n          pbVar16 = (byte *)".preinit_array";\n          pbVar17 = (byte *)name;\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (bVar19);\n          bVar22 = false;\n          bVar19 = (!bVar20 && !bVar19) == bVar20;\n          if (bVar19) {\n            type = 0x10;\n          }\n          else {\n            lVar15 = 0xb;\n            pbVar16 = (byte *)".fini_array";\n            pbVar17 = (byte *)name;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);\n            if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }\n          }\n        }" if (parenthesized_expression "(bVar19)" ( identifier )) (compound_statement "{\n          type = 0xe;\n        }" { (expression_statement "type = 0xe;" (assignment_expression "type = 0xe" identifier = number_literal) ;) }) (else_clause "else {\n          lVar15 = 0xe;\n          pbVar16 = (byte *)".preinit_array";\n          pbVar17 = (byte *)name;\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (bVar19);\n          bVar22 = false;\n          bVar19 = (!bVar20 && !bVar19) == bVar20;\n          if (bVar19) {\n            type = 0x10;\n          }\n          else {\n            lVar15 = 0xb;\n            pbVar16 = (byte *)".fini_array";\n            pbVar17 = (byte *)name;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);\n            if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }\n          }\n        }" else (compound_statement "{\n          lVar15 = 0xe;\n          pbVar16 = (byte *)".preinit_array";\n          pbVar17 = (byte *)name;\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (bVar19);\n          bVar22 = false;\n          bVar19 = (!bVar20 && !bVar19) == bVar20;\n          if (bVar19) {\n            type = 0x10;\n          }\n          else {\n            lVar15 = 0xb;\n            pbVar16 = (byte *)".fini_array";\n            pbVar17 = (byte *)name;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);\n            if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }\n          }\n        }" { (expression_statement "lVar15 = 0xe;" (assignment_expression "lVar15 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)".preinit_array";" (assignment_expression "pbVar16 = (byte *)".preinit_array"" identifier = (cast_expression "(byte *)".preinit_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".preinit_array"" " string_content "))) ;) (expression_statement "pbVar17 = (byte *)name;" (assignment_expression "pbVar17 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (bVar19);" do (compound_statement "{\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + 1;\n            pbVar17 = pbVar17 + 1;\n          }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar16 < *pbVar17;" (assignment_expression "bVar20 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + 1;" (assignment_expression "pbVar16 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) (expression_statement "bVar19 = (!bVar20 && !bVar19) == bVar20;" (assignment_expression "bVar19 = (!bVar20 && !bVar19) == bVar20" identifier = (binary_expression "(!bVar20 && !bVar19) == bVar20" (parenthesized_expression "(!bVar20 && !bVar19)" ( (binary_expression "!bVar20 && !bVar19" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar19) {\n            type = 0x10;\n          }\n          else {\n            lVar15 = 0xb;\n            pbVar16 = (byte *)".fini_array";\n            pbVar17 = (byte *)name;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);\n            if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }\n          }" if (parenthesized_expression "(bVar19)" ( identifier )) (compound_statement "{\n            type = 0x10;\n          }" { (expression_statement "type = 0x10;" (assignment_expression "type = 0x10" identifier = number_literal) ;) }) (else_clause "else {\n            lVar15 = 0xb;\n            pbVar16 = (byte *)".fini_array";\n            pbVar17 = (byte *)name;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);\n            if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }\n          }" else (compound_statement "{\n            lVar15 = 0xb;\n            pbVar16 = (byte *)".fini_array";\n            pbVar17 = (byte *)name;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);\n            if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }\n          }" { (expression_statement "lVar15 = 0xb;" (assignment_expression "lVar15 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)".fini_array";" (assignment_expression "pbVar16 = (byte *)".fini_array"" identifier = (cast_expression "(byte *)".fini_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".fini_array"" " string_content "))) ;) (expression_statement "pbVar17 = (byte *)name;" (assignment_expression "pbVar17 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            } while (bVar19);" do (compound_statement "{\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar22 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + 1;\n              pbVar17 = pbVar17 + 1;\n            }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar22 = *pbVar16 < *pbVar17;" (assignment_expression "bVar22 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + 1;" (assignment_expression "pbVar16 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (if_statement "if ((!bVar22 && !bVar19) == bVar22) {\n              type = 0xf;\n            }" if (parenthesized_expression "((!bVar22 && !bVar19) == bVar22)" ( (binary_expression "(!bVar22 && !bVar19) == bVar22" (parenthesized_expression "(!bVar22 && !bVar19)" ( (binary_expression "!bVar22 && !bVar19" (unary_expression "!bVar22" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) == identifier) )) (compound_statement "{\n              type = 0xf;\n            }" { (expression_statement "type = 0xf;" (assignment_expression "type = 0xf" identifier = number_literal) ;) })) }))) }))) })) (expression_statement "pTVar4 = parameters->target_;" (assignment_expression "pTVar4 = parameters->target_" identifier = (field_expression "parameters->target_" identifier -> field_identifier)) ;) (if_statement "if (pTVar4 == (Target *)0x0) goto LAB_0037fb03;" if (parenthesized_expression "(pTVar4 == (Target *)0x0)" ( (binary_expression "pTVar4 == (Target *)0x0" identifier == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0037fb03;" goto statement_identifier ;)) (expression_statement "iVar7 = (*pTVar4->_vptr_Target[0x1b])(pTVar4,name,(ulong)type,flags);" (assignment_expression "iVar7 = (*pTVar4->_vptr_Target[0x1b])(pTVar4,name,(ulong)type,flags)" identifier = (call_expression "(*pTVar4->_vptr_Target[0x1b])(pTVar4,name,(ulong)type,flags)" (parenthesized_expression "(*pTVar4->_vptr_Target[0x1b])" ( (pointer_expression "*pTVar4->_vptr_Target[0x1b]" * (subscript_expression "pTVar4->_vptr_Target[0x1b]" (field_expression "pTVar4->_vptr_Target" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(pTVar4,name,(ulong)type,flags)" ( identifier , identifier , (cast_expression "(ulong)type" ( (type_descriptor "ulong" type_identifier) ) identifier) , identifier )))) ;) (expression_statement "os = (Output_section *)CONCAT44(extraout_var,iVar7);" (assignment_expression "os = (Output_section *)CONCAT44(extraout_var,iVar7)" identifier = (cast_expression "(Output_section *)CONCAT44(extraout_var,iVar7)" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(extraout_var,iVar7)" identifier (argument_list "(extraout_var,iVar7)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n      lVar15 = 0xe;\n      pbVar16 = (byte *)".debug_abbrev";\n      pbVar17 = (byte *)name;\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + 1;\n        pbVar17 = pbVar17 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (bVar19) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\n        (pOVar13->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_abbrev_section_006752b8;\n        p_Var2 = &(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =\n             &p_Var2->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var2->_M_header;\n        pOVar14 = this->debug_info_;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color = _S_red;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent =\n             (_Base_ptr)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count = 0;\n        pOVar13->sized_ = false;\n        pOVar13->abbrev_count_ = 0;\n        pOVar13->failed_ = false;\n        puVar1 = &(pOVar13->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_abbrev_ = pOVar13;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        lVar15 = 0xc;\n        pbVar16 = (byte *)".debug_info";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar19);\n        if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f230;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_info_section_00675370;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        pOVar14->failed_ = false;\n        puVar1 = &(pOVar14->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_info_ = pOVar14;\n        os = (Output_section *)pOVar14;\n        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n    }" else (compound_statement "{\n      lVar15 = 0xe;\n      pbVar16 = (byte *)".debug_abbrev";\n      pbVar17 = (byte *)name;\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + 1;\n        pbVar17 = pbVar17 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (bVar19) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\n        (pOVar13->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_abbrev_section_006752b8;\n        p_Var2 = &(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =\n             &p_Var2->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var2->_M_header;\n        pOVar14 = this->debug_info_;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color = _S_red;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent =\n             (_Base_ptr)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count = 0;\n        pOVar13->sized_ = false;\n        pOVar13->abbrev_count_ = 0;\n        pOVar13->failed_ = false;\n        puVar1 = &(pOVar13->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_abbrev_ = pOVar13;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        lVar15 = 0xc;\n        pbVar16 = (byte *)".debug_info";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar19);\n        if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f230;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_info_section_00675370;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        pOVar14->failed_ = false;\n        puVar1 = &(pOVar14->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_info_ = pOVar14;\n        os = (Output_section *)pOVar14;\n        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n    }" { (expression_statement "lVar15 = 0xe;" (assignment_expression "lVar15 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)".debug_abbrev";" (assignment_expression "pbVar16 = (byte *)".debug_abbrev"" identifier = (cast_expression "(byte *)".debug_abbrev"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_abbrev"" " string_content "))) ;) (expression_statement "pbVar17 = (byte *)name;" (assignment_expression "pbVar17 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + 1;\n        pbVar17 = pbVar17 + 1;\n      } while (bVar22);" do (compound_statement "{\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + 1;\n        pbVar17 = pbVar17 + 1;\n      }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar19 = *pbVar16 < *pbVar17;" (assignment_expression "bVar19 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar22 = *pbVar16 == *pbVar17;" (assignment_expression "bVar22 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + 1;" (assignment_expression "pbVar16 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar22)" ( identifier )) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar19 = (!bVar19 && !bVar22) == bVar19;" (assignment_expression "bVar19 = (!bVar19 && !bVar22) == bVar19" identifier = (binary_expression "(!bVar19 && !bVar22) == bVar19" (parenthesized_expression "(!bVar19 && !bVar22)" ( (binary_expression "!bVar19 && !bVar22" (unary_expression "!bVar19" ! identifier) && (unary_expression "!bVar22" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar19) {\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\n        (pOVar13->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_abbrev_section_006752b8;\n        p_Var2 = &(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =\n             &p_Var2->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var2->_M_header;\n        pOVar14 = this->debug_info_;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color = _S_red;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent =\n             (_Base_ptr)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count = 0;\n        pOVar13->sized_ = false;\n        pOVar13->abbrev_count_ = 0;\n        pOVar13->failed_ = false;\n        puVar1 = &(pOVar13->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_abbrev_ = pOVar13;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }\n      else {\n        lVar15 = 0xc;\n        pbVar16 = (byte *)".debug_info";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar19);\n        if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f230;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_info_section_00675370;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        pOVar14->failed_ = false;\n        puVar1 = &(pOVar14->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_info_ = pOVar14;\n        os = (Output_section *)pOVar14;\n        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }" if (parenthesized_expression "(bVar19)" ( identifier )) (compound_statement "{\n        pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x1a0);\n                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */\n        Output_section::Output_section((Output_section *)pOVar13,name,type,flags);\n        (pOVar13->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_abbrev_section_006752b8;\n        p_Var2 = &(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =\n             &p_Var2->_M_header;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var2->_M_header;\n        pOVar14 = this->debug_info_;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar13->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color = _S_red;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent =\n             (_Base_ptr)0x0;\n        (pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count = 0;\n        pOVar13->sized_ = false;\n        pOVar13->abbrev_count_ = 0;\n        pOVar13->failed_ = false;\n        puVar1 = &(pOVar13->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_abbrev_ = pOVar13;\n        os = (Output_section *)pOVar13;\n        if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }" { (expression_statement "pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x1a0);" (assignment_expression "pOVar13 = (Output_reduced_debug_abbrev_section *)operator_new(0x1a0)" identifier = (cast_expression "(Output_reduced_debug_abbrev_section *)operator_new(0x1a0)" ( (type_descriptor "Output_reduced_debug_abbrev_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x1a0)" identifier (argument_list "(0x1a0)" ( number_literal ))))) ;) comment (labeled_statement "Output_section::Output_section((Output_section *)pOVar13,name,type,flags);" statement_identifier : (ERROR ":" :) (expression_statement "Output_section((Output_section *)pOVar13,name,type,flags);" (call_expression "Output_section((Output_section *)pOVar13,name,type,flags)" identifier (argument_list "((Output_section *)pOVar13,name,type,flags)" ( (cast_expression "(Output_section *)pOVar13" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , identifier ))) ;)) (expression_statement "(pOVar13->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_abbrev_section_006752b8;" (assignment_expression "(pOVar13->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_abbrev_section_006752b8" (field_expression "(pOVar13->super_Output_section).super_Output_data._vptr_Output_data" (field_expression "(pOVar13->super_Output_section).super_Output_data" (parenthesized_expression "(pOVar13->super_Output_section)" ( (field_expression "pOVar13->super_Output_section" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(_func_int_varargs **)&PTR__Output_reduced_debug_abbrev_section_006752b8" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&PTR__Output_reduced_debug_abbrev_section_006752b8" & identifier))) ;) (expression_statement "p_Var2 = &(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;" (assignment_expression "p_Var2 = &(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header" identifier = (pointer_expression "&(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl" (field_expression "(pOVar13->abbrev_mapping_)._M_t" (parenthesized_expression "(pOVar13->abbrev_mapping_)" ( (field_expression "pOVar13->abbrev_mapping_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =\n             &p_Var2->_M_header;" (assignment_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =\n             &p_Var2->_M_header" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl" (field_expression "(pOVar13->abbrev_mapping_)._M_t" (parenthesized_expression "(pOVar13->abbrev_mapping_)" ( (field_expression "pOVar13->abbrev_mapping_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (pointer_expression "&p_Var2->_M_header" & (field_expression "p_Var2->_M_header" identifier -> field_identifier))) ;) (expression_statement "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var2->_M_header;" (assignment_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =\n             &p_Var2->_M_header" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl" (field_expression "(pOVar13->abbrev_mapping_)._M_t" (parenthesized_expression "(pOVar13->abbrev_mapping_)" ( (field_expression "pOVar13->abbrev_mapping_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (pointer_expression "&p_Var2->_M_header" & (field_expression "p_Var2->_M_header" identifier -> field_identifier))) ;) (expression_statement "pOVar14 = this->debug_info_;" (assignment_expression "pOVar14 = this->debug_info_" identifier = (field_expression "this->debug_info_" identifier -> field_identifier)) ;) (ERROR "(pOVar13->data_).super__Vector_base<unsigned_char,_std::" (comma_expression "(pOVar13->data_).super__Vector_base<unsigned_char,_std" (binary_expression "(pOVar13->data_).super__Vector_base<unsigned_char" (field_expression "(pOVar13->data_).super__Vector_base" (parenthesized_expression "(pOVar13->data_)" ( (field_expression "pOVar13->data_" identifier -> field_identifier) )) . field_identifier) < identifier) , identifier) : :) (expression_statement "allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;" (assignment_expression "allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0" (field_expression "allocator<unsigned_char>_>._M_impl.\n        _M_start" (field_expression "allocator<unsigned_char>_>._M_impl" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(pOVar13->data_).super__Vector_base<unsigned_char,_std::" (comma_expression "(pOVar13->data_).super__Vector_base<unsigned_char,_std" (binary_expression "(pOVar13->data_).super__Vector_base<unsigned_char" (field_expression "(pOVar13->data_).super__Vector_base" (parenthesized_expression "(pOVar13->data_)" ( (field_expression "pOVar13->data_" identifier -> field_identifier) )) . field_identifier) < identifier) , identifier) : :) (expression_statement "allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;" (assignment_expression "allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0" (field_expression "allocator<unsigned_char>_>._M_impl.\n        _M_finish" (field_expression "allocator<unsigned_char>_>._M_impl" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(pOVar13->data_).super__Vector_base<unsigned_char,_std::" (comma_expression "(pOVar13->data_).super__Vector_base<unsigned_char,_std" (binary_expression "(pOVar13->data_).super__Vector_base<unsigned_char" (field_expression "(pOVar13->data_).super__Vector_base" (parenthesized_expression "(pOVar13->data_)" ( (field_expression "pOVar13->data_" identifier -> field_identifier) )) . field_identifier) < identifier) , identifier) : :) (expression_statement "allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;" (assignment_expression "allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0" (field_expression "allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage" (field_expression "allocator<unsigned_char>_>._M_impl" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color = _S_red;" (assignment_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color = _S_red" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl" (field_expression "(pOVar13->abbrev_mapping_)._M_t" (parenthesized_expression "(pOVar13->abbrev_mapping_)" ( (field_expression "pOVar13->abbrev_mapping_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent =\n             (_Base_ptr)0x0;" (assignment_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent =\n             (_Base_ptr)0x0" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl" (field_expression "(pOVar13->abbrev_mapping_)._M_t" (parenthesized_expression "(pOVar13->abbrev_mapping_)" ( (field_expression "pOVar13->abbrev_mapping_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) ;) (expression_statement "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count = 0;" (assignment_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count = 0" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(pOVar13->abbrev_mapping_)._M_t._M_impl" (field_expression "(pOVar13->abbrev_mapping_)._M_t" (parenthesized_expression "(pOVar13->abbrev_mapping_)" ( (field_expression "pOVar13->abbrev_mapping_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "pOVar13->sized_ = false;" (assignment_expression "pOVar13->sized_ = false" (field_expression "pOVar13->sized_" identifier -> field_identifier) = false) ;) (expression_statement "pOVar13->abbrev_count_ = 0;" (assignment_expression "pOVar13->abbrev_count_ = 0" (field_expression "pOVar13->abbrev_count_" identifier -> field_identifier) = number_literal) ;) (expression_statement "pOVar13->failed_ = false;" (assignment_expression "pOVar13->failed_ = false" (field_expression "pOVar13->failed_" identifier -> field_identifier) = false) ;) (expression_statement "puVar1 = &(pOVar13->super_Output_section).field_0xc8;" (assignment_expression "puVar1 = &(pOVar13->super_Output_section).field_0xc8" identifier = (pointer_expression "&(pOVar13->super_Output_section).field_0xc8" & (field_expression "(pOVar13->super_Output_section).field_0xc8" (parenthesized_expression "(pOVar13->super_Output_section)" ( (field_expression "pOVar13->super_Output_section" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*puVar1 = *puVar1 | 0x30;" (assignment_expression "*puVar1 = *puVar1 | 0x30" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 0x30" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) (expression_statement "this->debug_abbrev_ = pOVar13;" (assignment_expression "this->debug_abbrev_ = pOVar13" (field_expression "this->debug_abbrev_" identifier -> field_identifier) = identifier) ;) (expression_statement "os = (Output_section *)pOVar13;" (assignment_expression "os = (Output_section *)pOVar13" identifier = (cast_expression "(Output_section *)pOVar13" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (pOVar14 != (Output_reduced_debug_info_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }" if (parenthesized_expression "(pOVar14 != (Output_reduced_debug_info_section *)0x0)" ( (binary_expression "pOVar14 != (Output_reduced_debug_info_section *)0x0" identifier != (cast_expression "(Output_reduced_debug_info_section *)0x0" ( (type_descriptor "Output_reduced_debug_info_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pOVar14->associated_abbrev_ = pOVar13;\n        }" { (expression_statement "pOVar14->associated_abbrev_ = pOVar13;" (assignment_expression "pOVar14->associated_abbrev_ = pOVar13" (field_expression "pOVar14->associated_abbrev_" identifier -> field_identifier) = identifier) ;) })) }) (else_clause "else {\n        lVar15 = 0xc;\n        pbVar16 = (byte *)".debug_info";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar19);\n        if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f230;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_info_section_00675370;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        pOVar14->failed_ = false;\n        puVar1 = &(pOVar14->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_info_ = pOVar14;\n        os = (Output_section *)pOVar14;\n        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }" else (compound_statement "{\n        lVar15 = 0xc;\n        pbVar16 = (byte *)".debug_info";\n        pbVar17 = (byte *)name;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar19);\n        if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f230;\n        pOVar14 = (Output_reduced_debug_info_section *)operator_new(0x170);\n                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */\n        Output_section::Output_section((Output_section *)pOVar14,name,type,flags);\n        (pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_info_section_00675370;\n        pOVar13 = this->debug_abbrev_;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;\n        (pOVar14->data_).super__Vector_base<unsigned_char,_std::allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;\n        pOVar14->failed_ = false;\n        puVar1 = &(pOVar14->super_Output_section).field_0xc8;\n        *puVar1 = *puVar1 | 0x30;\n        this->debug_info_ = pOVar14;\n        os = (Output_section *)pOVar14;\n        if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }\n      }" { (expression_statement "lVar15 = 0xc;" (assignment_expression "lVar15 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)".debug_info";" (assignment_expression "pbVar16 = (byte *)".debug_info"" identifier = (cast_expression "(byte *)".debug_info"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_info"" " string_content "))) ;) (expression_statement "pbVar17 = (byte *)name;" (assignment_expression "pbVar17 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        } while (bVar19);" do (compound_statement "{\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + 1;\n          pbVar17 = pbVar17 + 1;\n        }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar16 < *pbVar17;" (assignment_expression "bVar20 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + 1;" (assignment_expression "pbVar16 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (if_statement "if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f230;" if (parenthesized_expression "((!bVar20 && !bVar19) != bVar20)" ( (binary_expression "(!bVar20 && !bVar19) != bVar20" (parenthesized_expression "(!bVar20 && !bVar19)" ( (binary_expression "!bVar20 && !bVar19" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0037f230;" goto statement_identifier ;)) (expression_statement "pOVar14 = (Output_reduced_debug_info_section *)operator_new(0x170);" (assignment_expression "pOVar14 = (Output_reduced_debug_info_section *)operator_new(0x170)" identifier = (cast_expression "(Output_reduced_debug_info_section *)operator_new(0x170)" ( (type_descriptor "Output_reduced_debug_info_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x170)" identifier (argument_list "(0x170)" ( number_literal ))))) ;) comment (labeled_statement "Output_section::Output_section((Output_section *)pOVar14,name,type,flags);" statement_identifier : (ERROR ":" :) (expression_statement "Output_section((Output_section *)pOVar14,name,type,flags);" (call_expression "Output_section((Output_section *)pOVar14,name,type,flags)" identifier (argument_list "((Output_section *)pOVar14,name,type,flags)" ( (cast_expression "(Output_section *)pOVar14" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , identifier ))) ;)) (expression_statement "(pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_info_section_00675370;" (assignment_expression "(pOVar14->super_Output_section).super_Output_data._vptr_Output_data =\n             (_func_int_varargs **)&PTR__Output_reduced_debug_info_section_00675370" (field_expression "(pOVar14->super_Output_section).super_Output_data._vptr_Output_data" (field_expression "(pOVar14->super_Output_section).super_Output_data" (parenthesized_expression "(pOVar14->super_Output_section)" ( (field_expression "pOVar14->super_Output_section" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(_func_int_varargs **)&PTR__Output_reduced_debug_info_section_00675370" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&PTR__Output_reduced_debug_info_section_00675370" & identifier))) ;) (expression_statement "pOVar13 = this->debug_abbrev_;" (assignment_expression "pOVar13 = this->debug_abbrev_" identifier = (field_expression "this->debug_abbrev_" identifier -> field_identifier)) ;) (ERROR "(pOVar14->data_).super__Vector_base<unsigned_char,_std::" (comma_expression "(pOVar14->data_).super__Vector_base<unsigned_char,_std" (binary_expression "(pOVar14->data_).super__Vector_base<unsigned_char" (field_expression "(pOVar14->data_).super__Vector_base" (parenthesized_expression "(pOVar14->data_)" ( (field_expression "pOVar14->data_" identifier -> field_identifier) )) . field_identifier) < identifier) , identifier) : :) (expression_statement "allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0;" (assignment_expression "allocator<unsigned_char>_>._M_impl.\n        _M_start = (pointer)0x0" (field_expression "allocator<unsigned_char>_>._M_impl.\n        _M_start" (field_expression "allocator<unsigned_char>_>._M_impl" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(pOVar14->data_).super__Vector_base<unsigned_char,_std::" (comma_expression "(pOVar14->data_).super__Vector_base<unsigned_char,_std" (binary_expression "(pOVar14->data_).super__Vector_base<unsigned_char" (field_expression "(pOVar14->data_).super__Vector_base" (parenthesized_expression "(pOVar14->data_)" ( (field_expression "pOVar14->data_" identifier -> field_identifier) )) . field_identifier) < identifier) , identifier) : :) (expression_statement "allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0;" (assignment_expression "allocator<unsigned_char>_>._M_impl.\n        _M_finish = (pointer)0x0" (field_expression "allocator<unsigned_char>_>._M_impl.\n        _M_finish" (field_expression "allocator<unsigned_char>_>._M_impl" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(pOVar14->data_).super__Vector_base<unsigned_char,_std::" (comma_expression "(pOVar14->data_).super__Vector_base<unsigned_char,_std" (binary_expression "(pOVar14->data_).super__Vector_base<unsigned_char" (field_expression "(pOVar14->data_).super__Vector_base" (parenthesized_expression "(pOVar14->data_)" ( (field_expression "pOVar14->data_" identifier -> field_identifier) )) . field_identifier) < identifier) , identifier) : :) (expression_statement "allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0;" (assignment_expression "allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage = (pointer)0x0" (field_expression "allocator<unsigned_char>_>._M_impl.\n        _M_end_of_storage" (field_expression "allocator<unsigned_char>_>._M_impl" (binary_expression "allocator<unsigned_char>_" (binary_expression "allocator<unsigned_char" identifier < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "pOVar14->failed_ = false;" (assignment_expression "pOVar14->failed_ = false" (field_expression "pOVar14->failed_" identifier -> field_identifier) = false) ;) (expression_statement "puVar1 = &(pOVar14->super_Output_section).field_0xc8;" (assignment_expression "puVar1 = &(pOVar14->super_Output_section).field_0xc8" identifier = (pointer_expression "&(pOVar14->super_Output_section).field_0xc8" & (field_expression "(pOVar14->super_Output_section).field_0xc8" (parenthesized_expression "(pOVar14->super_Output_section)" ( (field_expression "pOVar14->super_Output_section" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*puVar1 = *puVar1 | 0x30;" (assignment_expression "*puVar1 = *puVar1 | 0x30" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 0x30" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) (expression_statement "this->debug_info_ = pOVar14;" (assignment_expression "this->debug_info_ = pOVar14" (field_expression "this->debug_info_" identifier -> field_identifier) = identifier) ;) (expression_statement "os = (Output_section *)pOVar14;" (assignment_expression "os = (Output_section *)pOVar14" identifier = (cast_expression "(Output_section *)pOVar14" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (pOVar13 != (Output_reduced_debug_abbrev_section *)0x0) {\n          pOVar14->associated_abbrev_ = pOVar13;\n        }" if (parenthesized_expression "(pOVar13 != (Output_reduced_debug_abbrev_section *)0x0)" ( (binary_expression "pOVar13 != (Output_reduced_debug_abbrev_section *)0x0" identifier != (cast_expression "(Output_reduced_debug_abbrev_section *)0x0" ( (type_descriptor "Output_reduced_debug_abbrev_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pOVar14->associated_abbrev_ = pOVar13;\n        }" { (expression_statement "pOVar14->associated_abbrev_ = pOVar13;" (assignment_expression "pOVar14->associated_abbrev_ = pOVar13" (field_expression "pOVar14->associated_abbrev_" identifier -> field_identifier) = identifier) ;) })) }))) }))) }) (else_clause "else {\n    lVar15 = 6;\n    pbVar16 = &DAT_00533552;\n    pbVar17 = (byte *)name;\n    do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      bVar20 = *pbVar16 < *pbVar17;\n      bVar19 = *pbVar16 == *pbVar17;\n      pbVar16 = pbVar16 + 1;\n      pbVar17 = pbVar17 + 1;\n    } while (bVar19);\n    if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f1e5;\n    pOVar12 = (Output_section *)operator_new(0x178);\n                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */\n    Output_section::Output_section(pOVar12,name,type,flags);\n    (pOVar12->super_Output_data)._vptr_Output_data =\n         (_func_int_varargs **)&PTR__Output_compressed_section_00675900;\n    pOVar12[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)pGVar3;\n    pOVar12[1].super_Output_data.data_size_ = (off_t)&pOVar12[1].super_Output_data.field_0x20;\n    pOVar12[1].super_Output_data.offset_ = 0;\n    pOVar12[1].super_Output_data.field_0x20 = 0;\n    pOVar12->field_0xc8 = pOVar12->field_0xc8 | 0x30;\n    os = pOVar12;\n  }" else (compound_statement "{\n    lVar15 = 6;\n    pbVar16 = &DAT_00533552;\n    pbVar17 = (byte *)name;\n    do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      bVar20 = *pbVar16 < *pbVar17;\n      bVar19 = *pbVar16 == *pbVar17;\n      pbVar16 = pbVar16 + 1;\n      pbVar17 = pbVar17 + 1;\n    } while (bVar19);\n    if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f1e5;\n    pOVar12 = (Output_section *)operator_new(0x178);\n                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */\n    Output_section::Output_section(pOVar12,name,type,flags);\n    (pOVar12->super_Output_data)._vptr_Output_data =\n         (_func_int_varargs **)&PTR__Output_compressed_section_00675900;\n    pOVar12[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)pGVar3;\n    pOVar12[1].super_Output_data.data_size_ = (off_t)&pOVar12[1].super_Output_data.field_0x20;\n    pOVar12[1].super_Output_data.offset_ = 0;\n    pOVar12[1].super_Output_data.field_0x20 = 0;\n    pOVar12->field_0xc8 = pOVar12->field_0xc8 | 0x30;\n    os = pOVar12;\n  }" { (expression_statement "lVar15 = 6;" (assignment_expression "lVar15 = 6" identifier = number_literal) ;) (expression_statement "pbVar16 = &DAT_00533552;" (assignment_expression "pbVar16 = &DAT_00533552" identifier = (pointer_expression "&DAT_00533552" & identifier)) ;) (expression_statement "pbVar17 = (byte *)name;" (assignment_expression "pbVar17 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      bVar20 = *pbVar16 < *pbVar17;\n      bVar19 = *pbVar16 == *pbVar17;\n      pbVar16 = pbVar16 + 1;\n      pbVar17 = pbVar17 + 1;\n    } while (bVar19);" do (compound_statement "{\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      bVar20 = *pbVar16 < *pbVar17;\n      bVar19 = *pbVar16 == *pbVar17;\n      pbVar16 = pbVar16 + 1;\n      pbVar17 = pbVar17 + 1;\n    }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar16 < *pbVar17;" (assignment_expression "bVar20 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + 1;" (assignment_expression "pbVar16 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (if_statement "if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f1e5;" if (parenthesized_expression "((!bVar20 && !bVar19) != bVar20)" ( (binary_expression "(!bVar20 && !bVar19) != bVar20" (parenthesized_expression "(!bVar20 && !bVar19)" ( (binary_expression "!bVar20 && !bVar19" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0037f1e5;" goto statement_identifier ;)) (expression_statement "pOVar12 = (Output_section *)operator_new(0x178);" (assignment_expression "pOVar12 = (Output_section *)operator_new(0x178)" identifier = (cast_expression "(Output_section *)operator_new(0x178)" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x178)" identifier (argument_list "(0x178)" ( number_literal ))))) ;) comment (labeled_statement "Output_section::Output_section(pOVar12,name,type,flags);" statement_identifier : (ERROR ":" :) (expression_statement "Output_section(pOVar12,name,type,flags);" (call_expression "Output_section(pOVar12,name,type,flags)" identifier (argument_list "(pOVar12,name,type,flags)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "(pOVar12->super_Output_data)._vptr_Output_data =\n         (_func_int_varargs **)&PTR__Output_compressed_section_00675900;" (assignment_expression "(pOVar12->super_Output_data)._vptr_Output_data =\n         (_func_int_varargs **)&PTR__Output_compressed_section_00675900" (field_expression "(pOVar12->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar12->super_Output_data)" ( (field_expression "pOVar12->super_Output_data" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_func_int_varargs **)&PTR__Output_compressed_section_00675900" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&PTR__Output_compressed_section_00675900" & identifier))) ;) (expression_statement "pOVar12[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)pGVar3;" (assignment_expression "pOVar12[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)pGVar3" (field_expression "pOVar12[1].super_Output_data._vptr_Output_data" (field_expression "pOVar12[1].super_Output_data" (subscript_expression "pOVar12[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) = (cast_expression "(_func_int_varargs **)pGVar3" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "pOVar12[1].super_Output_data.data_size_ = (off_t)&pOVar12[1].super_Output_data.field_0x20;" (assignment_expression "pOVar12[1].super_Output_data.data_size_ = (off_t)&pOVar12[1].super_Output_data.field_0x20" (field_expression "pOVar12[1].super_Output_data.data_size_" (field_expression "pOVar12[1].super_Output_data" (subscript_expression "pOVar12[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) = (binary_expression "(off_t)&pOVar12[1].super_Output_data.field_0x20" (parenthesized_expression "(off_t)" ( identifier )) & (field_expression "pOVar12[1].super_Output_data.field_0x20" (field_expression "pOVar12[1].super_Output_data" (subscript_expression "pOVar12[1]" identifier [ number_literal ]) . field_identifier) . field_identifier))) ;) (expression_statement "pOVar12[1].super_Output_data.offset_ = 0;" (assignment_expression "pOVar12[1].super_Output_data.offset_ = 0" (field_expression "pOVar12[1].super_Output_data.offset_" (field_expression "pOVar12[1].super_Output_data" (subscript_expression "pOVar12[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "pOVar12[1].super_Output_data.field_0x20 = 0;" (assignment_expression "pOVar12[1].super_Output_data.field_0x20 = 0" (field_expression "pOVar12[1].super_Output_data.field_0x20" (field_expression "pOVar12[1].super_Output_data" (subscript_expression "pOVar12[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "pOVar12->field_0xc8 = pOVar12->field_0xc8 | 0x30;" (assignment_expression "pOVar12->field_0xc8 = pOVar12->field_0xc8 | 0x30" (field_expression "pOVar12->field_0xc8" identifier -> field_identifier) = (binary_expression "pOVar12->field_0xc8 | 0x30" (field_expression "pOVar12->field_0xc8" identifier -> field_identifier) | number_literal)) ;) (expression_statement "os = pOVar12;" (assignment_expression "os = pOVar12" identifier = identifier) ;) }))) (expression_statement "pOVar12 = os;" (assignment_expression "pOVar12 = os" identifier = identifier) ;) (if_statement "if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {\n    if (parameters->options_ == (General_options *)0x0) goto LAB_0037f97a;\n    local_59 = (parameters->options_->relro_).value;\n    if ((local_59 == false) || (((uint)flags & 3) != 3)) goto LAB_0037f273;\n    if (type == 1) {\n      bVar19 = false;\n      bVar22 = (flags & 0x400) == 0;\n      if (!bVar22) goto LAB_0037f278;\n      lVar15 = 0xd;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".data.rel.ro";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (bVar19) goto LAB_0037f278;\n      lVar15 = 0x13;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);\n      bVar22 = false;\n      bVar19 = (!bVar20 && !bVar19) == bVar20;\n      if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar20 = false;\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if (((!bVar20 && !bVar19) != bVar20) && (iVar7 = strcmp(name,".jcr"), iVar7 != 0))\n          goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < type - 0xe) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = false;\n    }\n    pOVar12->field_0xc9 = pOVar12->field_0xc9 | 0x20;\n  }\n  else {\nLAB_0037f273:\n    local_59 = is_relro;\n    if (is_relro) goto LAB_0037f278;\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    if (parameters->options_ == (General_options *)0x0) goto LAB_0037f97a;\n    local_59 = (parameters->options_->relro_).value;\n    if ((local_59 == false) || (((uint)flags & 3) != 3)) goto LAB_0037f273;\n    if (type == 1) {\n      bVar19 = false;\n      bVar22 = (flags & 0x400) == 0;\n      if (!bVar22) goto LAB_0037f278;\n      lVar15 = 0xd;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".data.rel.ro";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (bVar19) goto LAB_0037f278;\n      lVar15 = 0x13;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);\n      bVar22 = false;\n      bVar19 = (!bVar20 && !bVar19) == bVar20;\n      if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar20 = false;\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if (((!bVar20 && !bVar19) != bVar20) && (iVar7 = strcmp(name,".jcr"), iVar7 != 0))\n          goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < type - 0xe) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = false;\n    }\n    pOVar12->field_0xc9 = pOVar12->field_0xc9 | 0x20;\n  }" { (if_statement "if (parameters->options_ == (General_options *)0x0) goto LAB_0037f97a;" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0037f97a;" goto statement_identifier ;)) (expression_statement "local_59 = (parameters->options_->relro_).value;" (assignment_expression "local_59 = (parameters->options_->relro_).value" identifier = (field_expression "(parameters->options_->relro_).value" (parenthesized_expression "(parameters->options_->relro_)" ( (field_expression "parameters->options_->relro_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((local_59 == false) || (((uint)flags & 3) != 3)) goto LAB_0037f273;" if (parenthesized_expression "((local_59 == false) || (((uint)flags & 3) != 3))" ( (binary_expression "(local_59 == false) || (((uint)flags & 3) != 3)" (parenthesized_expression "(local_59 == false)" ( (binary_expression "local_59 == false" identifier == false) )) || (parenthesized_expression "(((uint)flags & 3) != 3)" ( (binary_expression "((uint)flags & 3) != 3" (parenthesized_expression "((uint)flags & 3)" ( (binary_expression "(uint)flags & 3" (cast_expression "(uint)flags" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_0037f273;" goto statement_identifier ;)) (if_statement "if (type == 1) {\n      bVar19 = false;\n      bVar22 = (flags & 0x400) == 0;\n      if (!bVar22) goto LAB_0037f278;\n      lVar15 = 0xd;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".data.rel.ro";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (bVar19) goto LAB_0037f278;\n      lVar15 = 0x13;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);\n      bVar22 = false;\n      bVar19 = (!bVar20 && !bVar19) == bVar20;\n      if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar20 = false;\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if (((!bVar20 && !bVar19) != bVar20) && (iVar7 = strcmp(name,".jcr"), iVar7 != 0))\n          goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < type - 0xe) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = false;\n    }" if (parenthesized_expression "(type == 1)" ( (binary_expression "type == 1" identifier == number_literal) )) (compound_statement "{\n      bVar19 = false;\n      bVar22 = (flags & 0x400) == 0;\n      if (!bVar22) goto LAB_0037f278;\n      lVar15 = 0xd;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".data.rel.ro";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (bVar19) goto LAB_0037f278;\n      lVar15 = 0x13;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);\n      bVar22 = false;\n      bVar19 = (!bVar20 && !bVar19) == bVar20;\n      if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar20 = false;\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if (((!bVar20 && !bVar19) != bVar20) && (iVar7 = strcmp(name,".jcr"), iVar7 != 0))\n          goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }" { (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "bVar22 = (flags & 0x400) == 0;" (assignment_expression "bVar22 = (flags & 0x400) == 0" identifier = (binary_expression "(flags & 0x400) == 0" (parenthesized_expression "(flags & 0x400)" ( (binary_expression "flags & 0x400" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (!bVar22) goto LAB_0037f278;" if (parenthesized_expression "(!bVar22)" ( (unary_expression "!bVar22" ! identifier) )) (goto_statement "goto LAB_0037f278;" goto statement_identifier ;)) (expression_statement "lVar15 = 0xd;" (assignment_expression "lVar15 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".data.rel.ro";" (assignment_expression "pbVar17 = (byte *)".data.rel.ro"" identifier = (cast_expression "(byte *)".data.rel.ro"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".data.rel.ro"" " string_content "))) ;) (do_statement "do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);" do (compound_statement "{\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar19 = *pbVar16 < *pbVar17;" (assignment_expression "bVar19 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar22 = *pbVar16 == *pbVar17;" (assignment_expression "bVar22 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar22)" ( identifier )) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar19 = (!bVar19 && !bVar22) == bVar19;" (assignment_expression "bVar19 = (!bVar19 && !bVar22) == bVar19" identifier = (binary_expression "(!bVar19 && !bVar22) == bVar19" (parenthesized_expression "(!bVar19 && !bVar22)" ( (binary_expression "!bVar19 && !bVar22" (unary_expression "!bVar19" ! identifier) && (unary_expression "!bVar22" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar19) goto LAB_0037f278;" if (parenthesized_expression "(bVar19)" ( identifier )) (goto_statement "goto LAB_0037f278;" goto statement_identifier ;)) (expression_statement "lVar15 = 0x13;" (assignment_expression "lVar15 = 0x13" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".data.rel.ro.local";" (assignment_expression "pbVar17 = (byte *)".data.rel.ro.local"" identifier = (cast_expression "(byte *)".data.rel.ro.local"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".data.rel.ro.local"" " string_content "))) ;) (do_statement "do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);" do (compound_statement "{\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar16 < *pbVar17;" (assignment_expression "bVar20 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) (expression_statement "bVar19 = (!bVar20 && !bVar19) == bVar20;" (assignment_expression "bVar19 = (!bVar20 && !bVar19) == bVar20" identifier = (binary_expression "(!bVar20 && !bVar19) == bVar20" (parenthesized_expression "(!bVar20 && !bVar19)" ( (binary_expression "!bVar20 && !bVar19" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar20 = false;\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if (((!bVar20 && !bVar19) != bVar20) && (iVar7 = strcmp(name,".jcr"), iVar7 != 0))\n          goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }" if (parenthesized_expression "(!bVar19)" ( (unary_expression "!bVar19" ! identifier) )) (compound_statement "{\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar20 = false;\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if (((!bVar20 && !bVar19) != bVar20) && (iVar7 = strcmp(name,".jcr"), iVar7 != 0))\n          goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }" { (expression_statement "lVar15 = 7;" (assignment_expression "lVar15 = 7" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".ctors";" (assignment_expression "pbVar17 = (byte *)".ctors"" identifier = (cast_expression "(byte *)".ctors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors"" " string_content "))) ;) (do_statement "do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);" do (compound_statement "{\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar22 = *pbVar16 < *pbVar17;" (assignment_expression "bVar22 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar19 = (!bVar22 && !bVar19) == bVar22;" (assignment_expression "bVar19 = (!bVar22 && !bVar19) == bVar22" identifier = (binary_expression "(!bVar22 && !bVar19) == bVar22" (parenthesized_expression "(!bVar22 && !bVar19)" ( (binary_expression "!bVar22 && !bVar19" (unary_expression "!bVar22" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if (((!bVar20 && !bVar19) != bVar20) && (iVar7 = strcmp(name,".jcr"), iVar7 != 0))\n          goto LAB_0037f273;\n        }" if (parenthesized_expression "(!bVar19)" ( (unary_expression "!bVar19" ! identifier) )) (compound_statement "{\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if (((!bVar20 && !bVar19) != bVar20) && (iVar7 = strcmp(name,".jcr"), iVar7 != 0))\n          goto LAB_0037f273;\n        }" { (expression_statement "lVar15 = 7;" (assignment_expression "lVar15 = 7" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".dtors";" (assignment_expression "pbVar17 = (byte *)".dtors"" identifier = (cast_expression "(byte *)".dtors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors"" " string_content "))) ;) (do_statement "do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);" do (compound_statement "{\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar16 < *pbVar17;" (assignment_expression "bVar20 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (if_statement "if (((!bVar20 && !bVar19) != bVar20) && (iVar7 = strcmp(name,".jcr"), iVar7 != 0))\n          goto LAB_0037f273;" if (parenthesized_expression "(((!bVar20 && !bVar19) != bVar20) && (iVar7 = strcmp(name,".jcr"), iVar7 != 0))" ( (binary_expression "((!bVar20 && !bVar19) != bVar20) && (iVar7 = strcmp(name,".jcr"), iVar7 != 0)" (parenthesized_expression "((!bVar20 && !bVar19) != bVar20)" ( (binary_expression "(!bVar20 && !bVar19) != bVar20" (parenthesized_expression "(!bVar20 && !bVar19)" ( (binary_expression "!bVar20 && !bVar19" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) != identifier) )) && (parenthesized_expression "(iVar7 = strcmp(name,".jcr"), iVar7 != 0)" ( (comma_expression "iVar7 = strcmp(name,".jcr"), iVar7 != 0" (assignment_expression "iVar7 = strcmp(name,".jcr")" identifier = (call_expression "strcmp(name,".jcr")" identifier (argument_list "(name,".jcr")" ( identifier , (string_literal "".jcr"" " string_content ") )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_0037f273;" goto statement_identifier ;)) })) (goto_statement "goto LAB_0037f278;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (2 < type - 0xe) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = false;\n    }" else (compound_statement "{\n      if (2 < type - 0xe) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = false;\n    }" { (if_statement "if (2 < type - 0xe) goto LAB_0037f273;" if (parenthesized_expression "(2 < type - 0xe)" ( (binary_expression "2 < type - 0xe" number_literal < (binary_expression "type - 0xe" identifier - number_literal)) )) (goto_statement "goto LAB_0037f273;" goto statement_identifier ;)) (labeled_statement "LAB_0037f278:\n      local_59 = false;" statement_identifier : (expression_statement "local_59 = false;" (assignment_expression "local_59 = false" identifier = false) ;)) }))) (expression_statement "pOVar12->field_0xc9 = pOVar12->field_0xc9 | 0x20;" (assignment_expression "pOVar12->field_0xc9 = pOVar12->field_0xc9 | 0x20" (field_expression "pOVar12->field_0xc9" identifier -> field_identifier) = (binary_expression "pOVar12->field_0xc9 | 0x20" (field_expression "pOVar12->field_0xc9" identifier -> field_identifier) | number_literal)) ;) }) (else_clause "else {\nLAB_0037f273:\n    local_59 = is_relro;\n    if (is_relro) goto LAB_0037f278;\n  }" else (compound_statement "{\nLAB_0037f273:\n    local_59 = is_relro;\n    if (is_relro) goto LAB_0037f278;\n  }" { (labeled_statement "LAB_0037f273:\n    local_59 = is_relro;" statement_identifier : (expression_statement "local_59 = is_relro;" (assignment_expression "local_59 = is_relro" identifier = identifier) ;)) (if_statement "if (is_relro) goto LAB_0037f278;" if (parenthesized_expression "(is_relro)" ( identifier )) (goto_statement "goto LAB_0037f278;" goto statement_identifier ;)) }))) (if_statement "if ((order == ORDER_INVALID) && ((flags & 2) != 0)) {\n    OVar8 = default_section_order(this,pOVar12,local_59);\n    uVar18 = (ulong)OVar8;\n    pOVar12 = os;\n  }" if (parenthesized_expression "((order == ORDER_INVALID) && ((flags & 2) != 0))" ( (binary_expression "(order == ORDER_INVALID) && ((flags & 2) != 0)" (parenthesized_expression "(order == ORDER_INVALID)" ( (binary_expression "order == ORDER_INVALID" identifier == identifier) )) && (parenthesized_expression "((flags & 2) != 0)" ( (binary_expression "(flags & 2) != 0" (parenthesized_expression "(flags & 2)" ( (binary_expression "flags & 2" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    OVar8 = default_section_order(this,pOVar12,local_59);\n    uVar18 = (ulong)OVar8;\n    pOVar12 = os;\n  }" { (expression_statement "OVar8 = default_section_order(this,pOVar12,local_59);" (assignment_expression "OVar8 = default_section_order(this,pOVar12,local_59)" identifier = (call_expression "default_section_order(this,pOVar12,local_59)" identifier (argument_list "(this,pOVar12,local_59)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar18 = (ulong)OVar8;" (assignment_expression "uVar18 = (ulong)OVar8" identifier = (cast_expression "(ulong)OVar8" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "pOVar12 = os;" (assignment_expression "pOVar12 = os" identifier = identifier) ;) })) (expression_statement "pPVar6 = parameters;" (assignment_expression "pPVar6 = parameters" identifier = identifier) ;) (expression_statement "OVar8 = (Output_section_order)uVar18;" (assignment_expression "OVar8 = (Output_section_order)uVar18" identifier = (cast_expression "(Output_section_order)uVar18" ( (type_descriptor "Output_section_order" type_identifier) ) identifier)) ;) (expression_statement "pOVar12->order_ = OVar8;" (assignment_expression "pOVar12->order_ = OVar8" (field_expression "pOVar12->order_" identifier -> field_identifier) = identifier) ;) (expression_statement "pTVar4 = pPVar6->target_;" (assignment_expression "pTVar4 = pPVar6->target_" identifier = (field_expression "pPVar6->target_" identifier -> field_identifier)) ;) (if_statement "if (pTVar4 == (Target *)0x0) goto LAB_0037fb03;" if (parenthesized_expression "(pTVar4 == (Target *)0x0)" ( (binary_expression "pTVar4 == (Target *)0x0" identifier == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0037fb03;" goto statement_identifier ;)) (if_statement "if (pTVar4->_vptr_Target[3] == Target::do_new_output_section) {\n    __position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage) goto LAB_0037f938;\nLAB_0037f2d9:\n    *__position._M_current = os;\n    (this->section_list_).\n    super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n    _M_finish = __position._M_current + 1;\n  }\n  else {\n    (*pTVar4->_vptr_Target[3])(pTVar4,pOVar12);\n    __position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current !=\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage) goto LAB_0037f2d9;\nLAB_0037f938:\n    std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n    _M_realloc_insert<gold::Output_section*_const&>(&this->section_list_,__position,&os);\n  }" if (parenthesized_expression "(pTVar4->_vptr_Target[3] == Target::do_new_output_section)" ( (binary_expression "pTVar4->_vptr_Target[3] == Target" (subscript_expression "pTVar4->_vptr_Target[3]" (field_expression "pTVar4->_vptr_Target" identifier -> field_identifier) [ number_literal ]) == identifier) (ERROR "::do_new_output_section" : : identifier) )) (compound_statement "{\n    __position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage) goto LAB_0037f938;\nLAB_0037f2d9:\n    *__position._M_current = os;\n    (this->section_list_).\n    super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n    _M_finish = __position._M_current + 1;\n  }" { (expression_statement "__position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n         _M_finish;" (field_expression "__position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n         _M_finish" (field_expression "__position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "__position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "__position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "__position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std" (assignment_expression "__position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "(this->section_list_).\n         super__Vector_base<gold" (field_expression "(this->section_list_).\n         super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->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) ;) (if_statement "if (__position._M_current ==\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage) goto LAB_0037f938;" if (parenthesized_expression "(__position._M_current ==\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage)" ( (field_expression "__position._M_current ==\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage" (field_expression "__position._M_current ==\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "__position._M_current ==\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "__position._M_current ==\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "__position._M_current ==\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std" (binary_expression "__position._M_current ==\n        (this->section_list_).\n        super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) == (binary_expression "(this->section_list_).\n        super__Vector_base<gold" (field_expression "(this->section_list_).\n        super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->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_0037f938;" goto statement_identifier ;)) (labeled_statement "LAB_0037f2d9:\n    *__position._M_current = os;" statement_identifier : (expression_statement "*__position._M_current = os;" (assignment_expression "*__position._M_current = os" (pointer_expression "*__position._M_current" * (field_expression "__position._M_current" identifier . field_identifier)) = identifier) ;)) (expression_statement "(this->section_list_).\n    super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n    _M_finish = __position._M_current + 1;" (assignment_expression "(this->section_list_).\n    super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n    _M_finish = __position._M_current + 1" (field_expression "(this->section_list_).\n    super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n    _M_finish" (field_expression "(this->section_list_).\n    super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "(this->section_list_).\n    super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(this->section_list_).\n    super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(this->section_list_).\n    super__Vector_base<gold::Output_section*,_std" (binary_expression "(this->section_list_).\n    super__Vector_base<gold" (field_expression "(this->section_list_).\n    super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->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) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) }) (else_clause "else {\n    (*pTVar4->_vptr_Target[3])(pTVar4,pOVar12);\n    __position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current !=\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage) goto LAB_0037f2d9;\nLAB_0037f938:\n    std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n    _M_realloc_insert<gold::Output_section*_const&>(&this->section_list_,__position,&os);\n  }" else (compound_statement "{\n    (*pTVar4->_vptr_Target[3])(pTVar4,pOVar12);\n    __position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current !=\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage) goto LAB_0037f2d9;\nLAB_0037f938:\n    std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n    _M_realloc_insert<gold::Output_section*_const&>(&this->section_list_,__position,&os);\n  }" { (expression_statement "(*pTVar4->_vptr_Target[3])(pTVar4,pOVar12);" (call_expression "(*pTVar4->_vptr_Target[3])(pTVar4,pOVar12)" (parenthesized_expression "(*pTVar4->_vptr_Target[3])" ( (pointer_expression "*pTVar4->_vptr_Target[3]" * (subscript_expression "pTVar4->_vptr_Target[3]" (field_expression "pTVar4->_vptr_Target" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(pTVar4,pOVar12)" ( identifier , identifier ))) ;) (expression_statement "__position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n         _M_finish;" (field_expression "__position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n         _M_finish" (field_expression "__position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "__position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "__position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "__position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold::Output_section*,_std" (assignment_expression "__position._M_current =\n         (this->section_list_).\n         super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "(this->section_list_).\n         super__Vector_base<gold" (field_expression "(this->section_list_).\n         super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->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) ;) (if_statement "if (__position._M_current !=\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage) goto LAB_0037f2d9;" if (parenthesized_expression "(__position._M_current !=\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage)" ( (field_expression "__position._M_current !=\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_end_of_storage" (field_expression "__position._M_current !=\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "__position._M_current !=\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "__position._M_current !=\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "__position._M_current !=\n        (this->section_list_).\n        super__Vector_base<gold::Output_section*,_std" (binary_expression "__position._M_current !=\n        (this->section_list_).\n        super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) != (binary_expression "(this->section_list_).\n        super__Vector_base<gold" (field_expression "(this->section_list_).\n        super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->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_0037f2d9;" goto statement_identifier ;)) (labeled_statement "LAB_0037f938:\n    std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n    _M_realloc_insert<gold::Output_section*_const&>(&this->section_list_,__position,&os);" statement_identifier : (ERROR "std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n    _M_realloc_insert<gold::" (comma_expression "std::vector<gold::Output_section*,_std" identifier (ERROR "::vector<gold::Output_section*" : : (binary_expression "vector<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Output_section*>_>::\n    _M_realloc_insert<gold" (binary_expression "Output_section*>_>::\n    _M_realloc_insert" (binary_expression "Output_section*>_" identifier * (ERROR ">" >) identifier) > (ERROR "::" : :) identifier) < identifier) : :) (expression_statement "Output_section*_const&>(&this->section_list_,__position,&os);" (binary_expression "Output_section*_const&>(&this->section_list_,__position,&os)" (binary_expression "Output_section*_const" identifier * identifier) (ERROR "&" &) > (parenthesized_expression "(&this->section_list_,__position,&os)" ( (comma_expression "&this->section_list_,__position,&os" (pointer_expression "&this->section_list_" & (field_expression "this->section_list_" identifier -> field_identifier)) , (comma_expression "__position,&os" identifier , (pointer_expression "&os" & identifier))) ))) ;)) }))) (expression_statement "pOVar12 = os;" (assignment_expression "pOVar12 = os" identifier = identifier) ;) (expression_statement "pSVar5 = this->script_options_;" (assignment_expression "pSVar5 = this->script_options_" identifier = (field_expression "this->script_options_" identifier -> field_identifier)) ;) (expression_statement "pGVar3 = parameters->options_;" (assignment_expression "pGVar3 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if ((pSVar5->script_sections_).saw_sections_clause_ == false) {\n    if (pGVar3 == (General_options *)0x0) {\nLAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar19 = false;\n    bVar22 = (pGVar3->relocatable_).value == false;\n    if (!bVar22) goto LAB_0037f347;\n    lVar15 = 0xc;\n    pbVar16 = (byte *)name;\n    pbVar17 = (byte *)".init_array";\n    do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      bVar19 = *pbVar16 < *pbVar17;\n      bVar22 = *pbVar16 == *pbVar17;\n      pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n      pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n    } while (bVar22);\n    bVar20 = false;\n    bVar19 = (!bVar19 && !bVar22) == bVar19;\n    if (bVar19) {\nLAB_0037f340:\n      os->field_0xc9 = os->field_0xc9 | 4;\n    }\n    else {\n      lVar15 = 0xc;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".fini_array";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);\n      if ((!bVar20 && !bVar19) == bVar20) goto LAB_0037f340;\n      bVar19 = false;\n      bVar22 = (pGVar3->ctors_in_init_array_).value == false;\n      if (bVar22) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar19 = (pGVar3->text_reorder_).value == false;\n    if (((!bVar19) && (bVar19 = (pSVar5->script_sections_).saw_sections_clause_ == false, bVar19))\n       && (bVar19 = this->section_ordering_specified_ == false, bVar19)) {\n      bVar22 = false;\n      bVar19 = (pGVar3->relocatable_).value == false;\n      if (bVar19) {\n        lVar15 = 6;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".text";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (bVar19) {\n          puVar1 = &os->field_0xc9;\n          *puVar1 = *puVar1 | 4;\n          bVar19 = *puVar1 == '\0';\n        }\n      }\n    }\n  }\n  else {\n    bVar19 = pGVar3 == (General_options *)0x0;\n    if (bVar19) goto LAB_0037f97a;\n  }" if (parenthesized_expression "((pSVar5->script_sections_).saw_sections_clause_ == false)" ( (binary_expression "(pSVar5->script_sections_).saw_sections_clause_ == false" (field_expression "(pSVar5->script_sections_).saw_sections_clause_" (parenthesized_expression "(pSVar5->script_sections_)" ( (field_expression "pSVar5->script_sections_" identifier -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n    if (pGVar3 == (General_options *)0x0) {\nLAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar19 = false;\n    bVar22 = (pGVar3->relocatable_).value == false;\n    if (!bVar22) goto LAB_0037f347;\n    lVar15 = 0xc;\n    pbVar16 = (byte *)name;\n    pbVar17 = (byte *)".init_array";\n    do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      bVar19 = *pbVar16 < *pbVar17;\n      bVar22 = *pbVar16 == *pbVar17;\n      pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n      pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n    } while (bVar22);\n    bVar20 = false;\n    bVar19 = (!bVar19 && !bVar22) == bVar19;\n    if (bVar19) {\nLAB_0037f340:\n      os->field_0xc9 = os->field_0xc9 | 4;\n    }\n    else {\n      lVar15 = 0xc;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".fini_array";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);\n      if ((!bVar20 && !bVar19) == bVar20) goto LAB_0037f340;\n      bVar19 = false;\n      bVar22 = (pGVar3->ctors_in_init_array_).value == false;\n      if (bVar22) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar19 = (pGVar3->text_reorder_).value == false;\n    if (((!bVar19) && (bVar19 = (pSVar5->script_sections_).saw_sections_clause_ == false, bVar19))\n       && (bVar19 = this->section_ordering_specified_ == false, bVar19)) {\n      bVar22 = false;\n      bVar19 = (pGVar3->relocatable_).value == false;\n      if (bVar19) {\n        lVar15 = 6;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".text";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (bVar19) {\n          puVar1 = &os->field_0xc9;\n          *puVar1 = *puVar1 | 4;\n          bVar19 = *puVar1 == '\0';\n        }\n      }\n    }\n  }" { (if_statement "if (pGVar3 == (General_options *)0x0) {\nLAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(pGVar3 == (General_options *)0x0)" ( (binary_expression "pGVar3 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }" { (labeled_statement "LAB_0037f97a:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;)) })) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "bVar22 = (pGVar3->relocatable_).value == false;" (assignment_expression "bVar22 = (pGVar3->relocatable_).value == false" identifier = (binary_expression "(pGVar3->relocatable_).value == false" (field_expression "(pGVar3->relocatable_).value" (parenthesized_expression "(pGVar3->relocatable_)" ( (field_expression "pGVar3->relocatable_" identifier -> field_identifier) )) . field_identifier) == false)) ;) (if_statement "if (!bVar22) goto LAB_0037f347;" if (parenthesized_expression "(!bVar22)" ( (unary_expression "!bVar22" ! identifier) )) (goto_statement "goto LAB_0037f347;" goto statement_identifier ;)) (expression_statement "lVar15 = 0xc;" (assignment_expression "lVar15 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".init_array";" (assignment_expression "pbVar17 = (byte *)".init_array"" identifier = (cast_expression "(byte *)".init_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".init_array"" " string_content "))) ;) (do_statement "do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      bVar19 = *pbVar16 < *pbVar17;\n      bVar22 = *pbVar16 == *pbVar17;\n      pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n      pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n    } while (bVar22);" do (compound_statement "{\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      bVar19 = *pbVar16 < *pbVar17;\n      bVar22 = *pbVar16 == *pbVar17;\n      pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n      pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n    }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar19 = *pbVar16 < *pbVar17;" (assignment_expression "bVar19 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar22 = *pbVar16 == *pbVar17;" (assignment_expression "bVar22 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar22)" ( identifier )) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar19 = (!bVar19 && !bVar22) == bVar19;" (assignment_expression "bVar19 = (!bVar19 && !bVar22) == bVar19" identifier = (binary_expression "(!bVar19 && !bVar22) == bVar19" (parenthesized_expression "(!bVar19 && !bVar22)" ( (binary_expression "!bVar19 && !bVar22" (unary_expression "!bVar19" ! identifier) && (unary_expression "!bVar22" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar19) {\nLAB_0037f340:\n      os->field_0xc9 = os->field_0xc9 | 4;\n    }\n    else {\n      lVar15 = 0xc;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".fini_array";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);\n      if ((!bVar20 && !bVar19) == bVar20) goto LAB_0037f340;\n      bVar19 = false;\n      bVar22 = (pGVar3->ctors_in_init_array_).value == false;\n      if (bVar22) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }" if (parenthesized_expression "(bVar19)" ( identifier )) (compound_statement "{\nLAB_0037f340:\n      os->field_0xc9 = os->field_0xc9 | 4;\n    }" { (labeled_statement "LAB_0037f340:\n      os->field_0xc9 = os->field_0xc9 | 4;" statement_identifier : (expression_statement "os->field_0xc9 = os->field_0xc9 | 4;" (assignment_expression "os->field_0xc9 = os->field_0xc9 | 4" (field_expression "os->field_0xc9" identifier -> field_identifier) = (binary_expression "os->field_0xc9 | 4" (field_expression "os->field_0xc9" identifier -> field_identifier) | number_literal)) ;)) }) (else_clause "else {\n      lVar15 = 0xc;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".fini_array";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);\n      if ((!bVar20 && !bVar19) == bVar20) goto LAB_0037f340;\n      bVar19 = false;\n      bVar22 = (pGVar3->ctors_in_init_array_).value == false;\n      if (bVar22) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }" else (compound_statement "{\n      lVar15 = 0xc;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".fini_array";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);\n      if ((!bVar20 && !bVar19) == bVar20) goto LAB_0037f340;\n      bVar19 = false;\n      bVar22 = (pGVar3->ctors_in_init_array_).value == false;\n      if (bVar22) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }" { (expression_statement "lVar15 = 0xc;" (assignment_expression "lVar15 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".fini_array";" (assignment_expression "pbVar17 = (byte *)".fini_array"" identifier = (cast_expression "(byte *)".fini_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".fini_array"" " string_content "))) ;) (do_statement "do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar19);" do (compound_statement "{\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar20 = *pbVar16 < *pbVar17;\n        bVar19 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar16 < *pbVar17;" (assignment_expression "bVar20 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (if_statement "if ((!bVar20 && !bVar19) == bVar20) goto LAB_0037f340;" if (parenthesized_expression "((!bVar20 && !bVar19) == bVar20)" ( (binary_expression "(!bVar20 && !bVar19) == bVar20" (parenthesized_expression "(!bVar20 && !bVar19)" ( (binary_expression "!bVar20 && !bVar19" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_0037f340;" goto statement_identifier ;)) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "bVar22 = (pGVar3->ctors_in_init_array_).value == false;" (assignment_expression "bVar22 = (pGVar3->ctors_in_init_array_).value == false" identifier = (binary_expression "(pGVar3->ctors_in_init_array_).value == false" (field_expression "(pGVar3->ctors_in_init_array_).value" (parenthesized_expression "(pGVar3->ctors_in_init_array_)" ( (field_expression "pGVar3->ctors_in_init_array_" identifier -> field_identifier) )) . field_identifier) == false)) ;) (if_statement "if (bVar22) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }" if (parenthesized_expression "(bVar22)" ( identifier )) (compound_statement "{\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar22);\n        bVar20 = false;\n        bVar19 = (!bVar19 && !bVar22) == bVar19;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }" { (expression_statement "lVar15 = 7;" (assignment_expression "lVar15 = 7" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".ctors";" (assignment_expression "pbVar17 = (byte *)".ctors"" identifier = (cast_expression "(byte *)".ctors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors"" " string_content "))) ;) (do_statement "do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar22);" do (compound_statement "{\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar19 = *pbVar16 < *pbVar17;\n          bVar22 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar19 = *pbVar16 < *pbVar17;" (assignment_expression "bVar19 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar22 = *pbVar16 == *pbVar17;" (assignment_expression "bVar22 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar22)" ( identifier )) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar19 = (!bVar19 && !bVar22) == bVar19;" (assignment_expression "bVar19 = (!bVar19 && !bVar22) == bVar19" identifier = (binary_expression "(!bVar19 && !bVar22) == bVar19" (parenthesized_expression "(!bVar19 && !bVar22)" ( (binary_expression "!bVar19 && !bVar22" (unary_expression "!bVar19" ! identifier) && (unary_expression "!bVar22" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f347;\n        }" if (parenthesized_expression "(!bVar19)" ( (unary_expression "!bVar19" ! identifier) )) (compound_statement "{\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f347;\n        }" { (expression_statement "lVar15 = 7;" (assignment_expression "lVar15 = 7" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".dtors";" (assignment_expression "pbVar17 = (byte *)".dtors"" identifier = (cast_expression "(byte *)".dtors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors"" " string_content "))) ;) (do_statement "do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);" do (compound_statement "{\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar20 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar16 < *pbVar17;" (assignment_expression "bVar20 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (if_statement "if ((!bVar20 && !bVar19) != bVar20) goto LAB_0037f347;" if (parenthesized_expression "((!bVar20 && !bVar19) != bVar20)" ( (binary_expression "(!bVar20 && !bVar19) != bVar20" (parenthesized_expression "(!bVar20 && !bVar19)" ( (binary_expression "!bVar20 && !bVar19" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0037f347;" goto statement_identifier ;)) })) (goto_statement "goto LAB_0037f340;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0037f347:\n    bVar19 = (pGVar3->text_reorder_).value == false;" statement_identifier : (expression_statement "bVar19 = (pGVar3->text_reorder_).value == false;" (assignment_expression "bVar19 = (pGVar3->text_reorder_).value == false" identifier = (binary_expression "(pGVar3->text_reorder_).value == false" (field_expression "(pGVar3->text_reorder_).value" (parenthesized_expression "(pGVar3->text_reorder_)" ( (field_expression "pGVar3->text_reorder_" identifier -> field_identifier) )) . field_identifier) == false)) ;)) (if_statement "if (((!bVar19) && (bVar19 = (pSVar5->script_sections_).saw_sections_clause_ == false, bVar19))\n       && (bVar19 = this->section_ordering_specified_ == false, bVar19)) {\n      bVar22 = false;\n      bVar19 = (pGVar3->relocatable_).value == false;\n      if (bVar19) {\n        lVar15 = 6;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".text";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (bVar19) {\n          puVar1 = &os->field_0xc9;\n          *puVar1 = *puVar1 | 4;\n          bVar19 = *puVar1 == '\0';\n        }\n      }\n    }" if (parenthesized_expression "(((!bVar19) && (bVar19 = (pSVar5->script_sections_).saw_sections_clause_ == false, bVar19))\n       && (bVar19 = this->section_ordering_specified_ == false, bVar19))" ( (binary_expression "((!bVar19) && (bVar19 = (pSVar5->script_sections_).saw_sections_clause_ == false, bVar19))\n       && (bVar19 = this->section_ordering_specified_ == false, bVar19)" (parenthesized_expression "((!bVar19) && (bVar19 = (pSVar5->script_sections_).saw_sections_clause_ == false, bVar19))" ( (binary_expression "(!bVar19) && (bVar19 = (pSVar5->script_sections_).saw_sections_clause_ == false, bVar19)" (parenthesized_expression "(!bVar19)" ( (unary_expression "!bVar19" ! identifier) )) && (parenthesized_expression "(bVar19 = (pSVar5->script_sections_).saw_sections_clause_ == false, bVar19)" ( (comma_expression "bVar19 = (pSVar5->script_sections_).saw_sections_clause_ == false, bVar19" (assignment_expression "bVar19 = (pSVar5->script_sections_).saw_sections_clause_ == false" identifier = (binary_expression "(pSVar5->script_sections_).saw_sections_clause_ == false" (field_expression "(pSVar5->script_sections_).saw_sections_clause_" (parenthesized_expression "(pSVar5->script_sections_)" ( (field_expression "pSVar5->script_sections_" identifier -> field_identifier) )) . field_identifier) == false)) , identifier) ))) )) && (parenthesized_expression "(bVar19 = this->section_ordering_specified_ == false, bVar19)" ( (comma_expression "bVar19 = this->section_ordering_specified_ == false, bVar19" (assignment_expression "bVar19 = this->section_ordering_specified_ == false" identifier = (binary_expression "this->section_ordering_specified_ == false" (field_expression "this->section_ordering_specified_" identifier -> field_identifier) == false)) , identifier) ))) )) (compound_statement "{\n      bVar22 = false;\n      bVar19 = (pGVar3->relocatable_).value == false;\n      if (bVar19) {\n        lVar15 = 6;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".text";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (bVar19) {\n          puVar1 = &os->field_0xc9;\n          *puVar1 = *puVar1 | 4;\n          bVar19 = *puVar1 == '\0';\n        }\n      }\n    }" { (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) (expression_statement "bVar19 = (pGVar3->relocatable_).value == false;" (assignment_expression "bVar19 = (pGVar3->relocatable_).value == false" identifier = (binary_expression "(pGVar3->relocatable_).value == false" (field_expression "(pGVar3->relocatable_).value" (parenthesized_expression "(pGVar3->relocatable_)" ( (field_expression "pGVar3->relocatable_" identifier -> field_identifier) )) . field_identifier) == false)) ;) (if_statement "if (bVar19) {\n        lVar15 = 6;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".text";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (bVar19) {\n          puVar1 = &os->field_0xc9;\n          *puVar1 = *puVar1 | 4;\n          bVar19 = *puVar1 == '\0';\n        }\n      }" if (parenthesized_expression "(bVar19)" ( identifier )) (compound_statement "{\n        lVar15 = 6;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".text";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar19 = (!bVar22 && !bVar19) == bVar22;\n        if (bVar19) {\n          puVar1 = &os->field_0xc9;\n          *puVar1 = *puVar1 | 4;\n          bVar19 = *puVar1 == '\0';\n        }\n      }" { (expression_statement "lVar15 = 6;" (assignment_expression "lVar15 = 6" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".text";" (assignment_expression "pbVar17 = (byte *)".text"" identifier = (cast_expression "(byte *)".text"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".text"" " string_content "))) ;) (do_statement "do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);" do (compound_statement "{\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar22 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar22 = *pbVar16 < *pbVar17;" (assignment_expression "bVar22 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (expression_statement "bVar19 = (!bVar22 && !bVar19) == bVar22;" (assignment_expression "bVar19 = (!bVar22 && !bVar19) == bVar22" identifier = (binary_expression "(!bVar22 && !bVar19) == bVar22" (parenthesized_expression "(!bVar22 && !bVar19)" ( (binary_expression "!bVar22 && !bVar19" (unary_expression "!bVar22" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar19) {\n          puVar1 = &os->field_0xc9;\n          *puVar1 = *puVar1 | 4;\n          bVar19 = *puVar1 == '\0';\n        }" if (parenthesized_expression "(bVar19)" ( identifier )) (compound_statement "{\n          puVar1 = &os->field_0xc9;\n          *puVar1 = *puVar1 | 4;\n          bVar19 = *puVar1 == '\0';\n        }" { (expression_statement "puVar1 = &os->field_0xc9;" (assignment_expression "puVar1 = &os->field_0xc9" identifier = (pointer_expression "&os->field_0xc9" & (field_expression "os->field_0xc9" identifier -> field_identifier))) ;) (expression_statement "*puVar1 = *puVar1 | 4;" (assignment_expression "*puVar1 = *puVar1 | 4" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 4" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) (expression_statement "bVar19 = *puVar1 == '\0';" (assignment_expression "bVar19 = *puVar1 == '\0'" identifier = (binary_expression "*puVar1 == '\0'" (pointer_expression "*puVar1" * identifier) == (char_literal "'\0'" ' escape_sequence '))) ;) })) })) })) }) (else_clause "else {\n    bVar19 = pGVar3 == (General_options *)0x0;\n    if (bVar19) goto LAB_0037f97a;\n  }" else (compound_statement "{\n    bVar19 = pGVar3 == (General_options *)0x0;\n    if (bVar19) goto LAB_0037f97a;\n  }" { (expression_statement "bVar19 = pGVar3 == (General_options *)0x0;" (assignment_expression "bVar19 = pGVar3 == (General_options *)0x0" identifier = (binary_expression "pGVar3 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (bVar19) goto LAB_0037f97a;" if (parenthesized_expression "(bVar19)" ( identifier )) (goto_statement "goto LAB_0037f97a;" goto statement_identifier ;)) }))) (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) (expression_statement "lVar15 = 5;" (assignment_expression "lVar15 = 5" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)(pGVar3->sort_section_).value;" (assignment_expression "pbVar16 = (byte *)(pGVar3->sort_section_).value" identifier = (cast_expression "(byte *)(pGVar3->sort_section_).value" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(pGVar3->sort_section_).value" (parenthesized_expression "(pGVar3->sort_section_)" ( (field_expression "pGVar3->sort_section_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pbVar17 = (byte *)0x575186;" (assignment_expression "pbVar17 = (byte *)0x575186" identifier = (cast_expression "(byte *)0x575186" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if (lVar15 == 0) break;\n    lVar15 = lVar15 + -1;\n    bVar22 = *pbVar16 < *pbVar17;\n    bVar19 = *pbVar16 == *pbVar17;\n    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n    pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n  } while (bVar19);" do (compound_statement "{\n    if (lVar15 == 0) break;\n    lVar15 = lVar15 + -1;\n    bVar22 = *pbVar16 < *pbVar17;\n    bVar19 = *pbVar16 == *pbVar17;\n    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n    pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n  }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar22 = *pbVar16 < *pbVar17;" (assignment_expression "bVar22 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (if_statement "if ((!bVar22 && !bVar19) == bVar22) {\n    os->field_0xc9 = os->field_0xc9 | 8;\n  }" if (parenthesized_expression "((!bVar22 && !bVar19) == bVar22)" ( (binary_expression "(!bVar22 && !bVar19) == bVar22" (parenthesized_expression "(!bVar22 && !bVar19)" ( (binary_expression "!bVar22 && !bVar19" (unary_expression "!bVar22" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) == identifier) )) (compound_statement "{\n    os->field_0xc9 = os->field_0xc9 | 8;\n  }" { (expression_statement "os->field_0xc9 = os->field_0xc9 | 8;" (assignment_expression "os->field_0xc9 = os->field_0xc9 | 8" (field_expression "os->field_0xc9" identifier -> field_identifier) = (binary_expression "os->field_0xc9 | 8" (field_expression "os->field_0xc9" identifier -> field_identifier) | number_literal)) ;) })) (if_statement "if (type == 3) {\n    bVar19 = false;\n    bVar22 = this->have_stabstr_section_ == false;\n    if (bVar22) {\n      lVar15 = 5;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".stab";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      uVar21 = 0;\n      uVar23 = (!bVar19 && !bVar22) == bVar19;\n      if ((bool)uVar23) {\n        sVar11 = strlen(name);\n        lVar15 = 4;\n        pbVar16 = (byte *)(name + (sVar11 - 3));\n        pbVar17 = (byte *)0x579a2e;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          uVar21 = *pbVar16 < *pbVar17;\n          uVar23 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while ((bool)uVar23);\n        if ((!(bool)uVar21 && !(bool)uVar23) == (bool)uVar21) {\n          this->have_stabstr_section_ = true;\n        }\n      }\n    }\n  }\n  else if ((type == 1) || (type == 8)) {\n    bVar19 = OVar8 < ORDER_NON_RELRO_FIRST;\n    bVar22 = OVar8 == ORDER_NON_RELRO_FIRST;\n    if ((ORDER_NON_RELRO_FIRST < OVar8) ||\n       (bVar19 = (0x3020c2UL >> (uVar18 & 0x3f) & 1) != 0, !bVar19)) {\n      lVar15 = 10;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".eh_frame";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar22 = false;\n        bVar19 = (!bVar20 && !bVar19) == bVar20;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar22 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          bVar20 = false;\n          bVar19 = (!bVar22 && !bVar19) == bVar22;\n          if (!bVar19) {\n            lVar15 = 5;\n            pbVar16 = (byte *)name;\n            pbVar17 = &DAT_005710ea;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);\n            if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(type == 3)" ( (binary_expression "type == 3" identifier == number_literal) )) (compound_statement "{\n    bVar19 = false;\n    bVar22 = this->have_stabstr_section_ == false;\n    if (bVar22) {\n      lVar15 = 5;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".stab";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      uVar21 = 0;\n      uVar23 = (!bVar19 && !bVar22) == bVar19;\n      if ((bool)uVar23) {\n        sVar11 = strlen(name);\n        lVar15 = 4;\n        pbVar16 = (byte *)(name + (sVar11 - 3));\n        pbVar17 = (byte *)0x579a2e;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          uVar21 = *pbVar16 < *pbVar17;\n          uVar23 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while ((bool)uVar23);\n        if ((!(bool)uVar21 && !(bool)uVar23) == (bool)uVar21) {\n          this->have_stabstr_section_ = true;\n        }\n      }\n    }\n  }" { (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "bVar22 = this->have_stabstr_section_ == false;" (assignment_expression "bVar22 = this->have_stabstr_section_ == false" identifier = (binary_expression "this->have_stabstr_section_ == false" (field_expression "this->have_stabstr_section_" identifier -> field_identifier) == false)) ;) (if_statement "if (bVar22) {\n      lVar15 = 5;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".stab";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      uVar21 = 0;\n      uVar23 = (!bVar19 && !bVar22) == bVar19;\n      if ((bool)uVar23) {\n        sVar11 = strlen(name);\n        lVar15 = 4;\n        pbVar16 = (byte *)(name + (sVar11 - 3));\n        pbVar17 = (byte *)0x579a2e;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          uVar21 = *pbVar16 < *pbVar17;\n          uVar23 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while ((bool)uVar23);\n        if ((!(bool)uVar21 && !(bool)uVar23) == (bool)uVar21) {\n          this->have_stabstr_section_ = true;\n        }\n      }\n    }" if (parenthesized_expression "(bVar22)" ( identifier )) (compound_statement "{\n      lVar15 = 5;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".stab";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      uVar21 = 0;\n      uVar23 = (!bVar19 && !bVar22) == bVar19;\n      if ((bool)uVar23) {\n        sVar11 = strlen(name);\n        lVar15 = 4;\n        pbVar16 = (byte *)(name + (sVar11 - 3));\n        pbVar17 = (byte *)0x579a2e;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          uVar21 = *pbVar16 < *pbVar17;\n          uVar23 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while ((bool)uVar23);\n        if ((!(bool)uVar21 && !(bool)uVar23) == (bool)uVar21) {\n          this->have_stabstr_section_ = true;\n        }\n      }\n    }" { (expression_statement "lVar15 = 5;" (assignment_expression "lVar15 = 5" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".stab";" (assignment_expression "pbVar17 = (byte *)".stab"" identifier = (cast_expression "(byte *)".stab"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".stab"" " string_content "))) ;) (do_statement "do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);" do (compound_statement "{\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar19 = *pbVar16 < *pbVar17;" (assignment_expression "bVar19 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar22 = *pbVar16 == *pbVar17;" (assignment_expression "bVar22 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar22)" ( identifier )) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "uVar23 = (!bVar19 && !bVar22) == bVar19;" (assignment_expression "uVar23 = (!bVar19 && !bVar22) == bVar19" identifier = (binary_expression "(!bVar19 && !bVar22) == bVar19" (parenthesized_expression "(!bVar19 && !bVar22)" ( (binary_expression "!bVar19 && !bVar22" (unary_expression "!bVar19" ! identifier) && (unary_expression "!bVar22" ! identifier)) )) == identifier)) ;) (if_statement "if ((bool)uVar23) {\n        sVar11 = strlen(name);\n        lVar15 = 4;\n        pbVar16 = (byte *)(name + (sVar11 - 3));\n        pbVar17 = (byte *)0x579a2e;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          uVar21 = *pbVar16 < *pbVar17;\n          uVar23 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while ((bool)uVar23);\n        if ((!(bool)uVar21 && !(bool)uVar23) == (bool)uVar21) {\n          this->have_stabstr_section_ = true;\n        }\n      }" if (parenthesized_expression "((bool)uVar23)" ( (cast_expression "(bool)uVar23" ( (type_descriptor "bool" primitive_type) ) identifier) )) (compound_statement "{\n        sVar11 = strlen(name);\n        lVar15 = 4;\n        pbVar16 = (byte *)(name + (sVar11 - 3));\n        pbVar17 = (byte *)0x579a2e;\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          uVar21 = *pbVar16 < *pbVar17;\n          uVar23 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while ((bool)uVar23);\n        if ((!(bool)uVar21 && !(bool)uVar23) == (bool)uVar21) {\n          this->have_stabstr_section_ = true;\n        }\n      }" { (expression_statement "sVar11 = strlen(name);" (assignment_expression "sVar11 = strlen(name)" identifier = (call_expression "strlen(name)" identifier (argument_list "(name)" ( identifier )))) ;) (expression_statement "lVar15 = 4;" (assignment_expression "lVar15 = 4" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)(name + (sVar11 - 3));" (assignment_expression "pbVar16 = (byte *)(name + (sVar11 - 3))" identifier = (cast_expression "(byte *)(name + (sVar11 - 3))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(name + (sVar11 - 3))" ( (binary_expression "name + (sVar11 - 3)" identifier + (parenthesized_expression "(sVar11 - 3)" ( (binary_expression "sVar11 - 3" identifier - number_literal) ))) )))) ;) (expression_statement "pbVar17 = (byte *)0x579a2e;" (assignment_expression "pbVar17 = (byte *)0x579a2e" identifier = (cast_expression "(byte *)0x579a2e" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          uVar21 = *pbVar16 < *pbVar17;\n          uVar23 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while ((bool)uVar23);" do (compound_statement "{\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          uVar21 = *pbVar16 < *pbVar17;\n          uVar23 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "uVar21 = *pbVar16 < *pbVar17;" (assignment_expression "uVar21 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "uVar23 = *pbVar16 == *pbVar17;" (assignment_expression "uVar23 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar23)" ( (cast_expression "(bool)uVar23" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (if_statement "if ((!(bool)uVar21 && !(bool)uVar23) == (bool)uVar21) {\n          this->have_stabstr_section_ = true;\n        }" if (parenthesized_expression "((!(bool)uVar21 && !(bool)uVar23) == (bool)uVar21)" ( (binary_expression "(!(bool)uVar21 && !(bool)uVar23) == (bool)uVar21" (parenthesized_expression "(!(bool)uVar21 && !(bool)uVar23)" ( (binary_expression "!(bool)uVar21 && !(bool)uVar23" (unary_expression "!(bool)uVar21" ! (cast_expression "(bool)uVar21" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar23" ! (cast_expression "(bool)uVar23" ( (type_descriptor "bool" primitive_type) ) identifier))) )) == (cast_expression "(bool)uVar21" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (compound_statement "{\n          this->have_stabstr_section_ = true;\n        }" { (expression_statement "this->have_stabstr_section_ = true;" (assignment_expression "this->have_stabstr_section_ = true" (field_expression "this->have_stabstr_section_" identifier -> field_identifier) = true) ;) })) })) })) }) (else_clause "else if ((type == 1) || (type == 8)) {\n    bVar19 = OVar8 < ORDER_NON_RELRO_FIRST;\n    bVar22 = OVar8 == ORDER_NON_RELRO_FIRST;\n    if ((ORDER_NON_RELRO_FIRST < OVar8) ||\n       (bVar19 = (0x3020c2UL >> (uVar18 & 0x3f) & 1) != 0, !bVar19)) {\n      lVar15 = 10;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".eh_frame";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar22 = false;\n        bVar19 = (!bVar20 && !bVar19) == bVar20;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar22 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          bVar20 = false;\n          bVar19 = (!bVar22 && !bVar19) == bVar22;\n          if (!bVar19) {\n            lVar15 = 5;\n            pbVar16 = (byte *)name;\n            pbVar17 = &DAT_005710ea;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);\n            if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }\n          }\n        }\n      }\n    }\n  }" else (if_statement "if ((type == 1) || (type == 8)) {\n    bVar19 = OVar8 < ORDER_NON_RELRO_FIRST;\n    bVar22 = OVar8 == ORDER_NON_RELRO_FIRST;\n    if ((ORDER_NON_RELRO_FIRST < OVar8) ||\n       (bVar19 = (0x3020c2UL >> (uVar18 & 0x3f) & 1) != 0, !bVar19)) {\n      lVar15 = 10;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".eh_frame";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar22 = false;\n        bVar19 = (!bVar20 && !bVar19) == bVar20;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar22 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          bVar20 = false;\n          bVar19 = (!bVar22 && !bVar19) == bVar22;\n          if (!bVar19) {\n            lVar15 = 5;\n            pbVar16 = (byte *)name;\n            pbVar17 = &DAT_005710ea;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);\n            if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "((type == 1) || (type == 8))" ( (binary_expression "(type == 1) || (type == 8)" (parenthesized_expression "(type == 1)" ( (binary_expression "type == 1" identifier == number_literal) )) || (parenthesized_expression "(type == 8)" ( (binary_expression "type == 8" identifier == number_literal) ))) )) (compound_statement "{\n    bVar19 = OVar8 < ORDER_NON_RELRO_FIRST;\n    bVar22 = OVar8 == ORDER_NON_RELRO_FIRST;\n    if ((ORDER_NON_RELRO_FIRST < OVar8) ||\n       (bVar19 = (0x3020c2UL >> (uVar18 & 0x3f) & 1) != 0, !bVar19)) {\n      lVar15 = 10;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".eh_frame";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar22 = false;\n        bVar19 = (!bVar20 && !bVar19) == bVar20;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar22 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          bVar20 = false;\n          bVar19 = (!bVar22 && !bVar19) == bVar22;\n          if (!bVar19) {\n            lVar15 = 5;\n            pbVar16 = (byte *)name;\n            pbVar17 = &DAT_005710ea;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);\n            if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }\n          }\n        }\n      }\n    }\n  }" { (expression_statement "bVar19 = OVar8 < ORDER_NON_RELRO_FIRST;" (assignment_expression "bVar19 = OVar8 < ORDER_NON_RELRO_FIRST" identifier = (binary_expression "OVar8 < ORDER_NON_RELRO_FIRST" identifier < identifier)) ;) (expression_statement "bVar22 = OVar8 == ORDER_NON_RELRO_FIRST;" (assignment_expression "bVar22 = OVar8 == ORDER_NON_RELRO_FIRST" identifier = (binary_expression "OVar8 == ORDER_NON_RELRO_FIRST" identifier == identifier)) ;) (if_statement "if ((ORDER_NON_RELRO_FIRST < OVar8) ||\n       (bVar19 = (0x3020c2UL >> (uVar18 & 0x3f) & 1) != 0, !bVar19)) {\n      lVar15 = 10;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".eh_frame";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar22 = false;\n        bVar19 = (!bVar20 && !bVar19) == bVar20;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar22 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          bVar20 = false;\n          bVar19 = (!bVar22 && !bVar19) == bVar22;\n          if (!bVar19) {\n            lVar15 = 5;\n            pbVar16 = (byte *)name;\n            pbVar17 = &DAT_005710ea;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);\n            if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "((ORDER_NON_RELRO_FIRST < OVar8) ||\n       (bVar19 = (0x3020c2UL >> (uVar18 & 0x3f) & 1) != 0, !bVar19))" ( (binary_expression "(ORDER_NON_RELRO_FIRST < OVar8) ||\n       (bVar19 = (0x3020c2UL >> (uVar18 & 0x3f) & 1) != 0, !bVar19)" (parenthesized_expression "(ORDER_NON_RELRO_FIRST < OVar8)" ( (binary_expression "ORDER_NON_RELRO_FIRST < OVar8" identifier < identifier) )) || (parenthesized_expression "(bVar19 = (0x3020c2UL >> (uVar18 & 0x3f) & 1) != 0, !bVar19)" ( (comma_expression "bVar19 = (0x3020c2UL >> (uVar18 & 0x3f) & 1) != 0, !bVar19" (assignment_expression "bVar19 = (0x3020c2UL >> (uVar18 & 0x3f) & 1) != 0" identifier = (binary_expression "(0x3020c2UL >> (uVar18 & 0x3f) & 1) != 0" (parenthesized_expression "(0x3020c2UL >> (uVar18 & 0x3f) & 1)" ( (binary_expression "0x3020c2UL >> (uVar18 & 0x3f) & 1" (binary_expression "0x3020c2UL >> (uVar18 & 0x3f)" number_literal >> (parenthesized_expression "(uVar18 & 0x3f)" ( (binary_expression "uVar18 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal)) , (unary_expression "!bVar19" ! identifier)) ))) )) (compound_statement "{\n      lVar15 = 10;\n      pbVar16 = (byte *)name;\n      pbVar17 = (byte *)".eh_frame";\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);\n      bVar20 = false;\n      bVar19 = (!bVar19 && !bVar22) == bVar19;\n      if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar22 = false;\n        bVar19 = (!bVar20 && !bVar19) == bVar20;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar22 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          bVar20 = false;\n          bVar19 = (!bVar22 && !bVar19) == bVar22;\n          if (!bVar19) {\n            lVar15 = 5;\n            pbVar16 = (byte *)name;\n            pbVar17 = &DAT_005710ea;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);\n            if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "lVar15 = 10;" (assignment_expression "lVar15 = 10" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".eh_frame";" (assignment_expression "pbVar17 = (byte *)".eh_frame"" identifier = (cast_expression "(byte *)".eh_frame"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".eh_frame"" " string_content "))) ;) (do_statement "do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      } while (bVar22);" do (compound_statement "{\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        bVar19 = *pbVar16 < *pbVar17;\n        bVar22 = *pbVar16 == *pbVar17;\n        pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n        pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n      }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar19 = *pbVar16 < *pbVar17;" (assignment_expression "bVar19 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar22 = *pbVar16 == *pbVar17;" (assignment_expression "bVar22 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar22)" ( identifier )) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar19 = (!bVar19 && !bVar22) == bVar19;" (assignment_expression "bVar19 = (!bVar19 && !bVar22) == bVar19" identifier = (binary_expression "(!bVar19 && !bVar22) == bVar19" (parenthesized_expression "(!bVar19 && !bVar22)" ( (binary_expression "!bVar19 && !bVar22" (unary_expression "!bVar19" ! identifier) && (unary_expression "!bVar22" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar19) {\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar22 = false;\n        bVar19 = (!bVar20 && !bVar19) == bVar20;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar22 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          bVar20 = false;\n          bVar19 = (!bVar22 && !bVar19) == bVar22;\n          if (!bVar19) {\n            lVar15 = 5;\n            pbVar16 = (byte *)name;\n            pbVar17 = &DAT_005710ea;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);\n            if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(!bVar19)" ( (unary_expression "!bVar19" ! identifier) )) (compound_statement "{\n        lVar15 = 7;\n        pbVar16 = (byte *)name;\n        pbVar17 = (byte *)".ctors";\n        do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);\n        bVar22 = false;\n        bVar19 = (!bVar20 && !bVar19) == bVar20;\n        if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar22 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          bVar20 = false;\n          bVar19 = (!bVar22 && !bVar19) == bVar22;\n          if (!bVar19) {\n            lVar15 = 5;\n            pbVar16 = (byte *)name;\n            pbVar17 = &DAT_005710ea;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);\n            if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }\n          }\n        }\n      }" { (expression_statement "lVar15 = 7;" (assignment_expression "lVar15 = 7" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".ctors";" (assignment_expression "pbVar17 = (byte *)".ctors"" identifier = (cast_expression "(byte *)".ctors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors"" " string_content "))) ;) (do_statement "do {\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar19);" do (compound_statement "{\n          if (lVar15 == 0) break;\n          lVar15 = lVar15 + -1;\n          bVar20 = *pbVar16 < *pbVar17;\n          bVar19 = *pbVar16 == *pbVar17;\n          pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar16 < *pbVar17;" (assignment_expression "bVar20 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) (expression_statement "bVar19 = (!bVar20 && !bVar19) == bVar20;" (assignment_expression "bVar19 = (!bVar20 && !bVar19) == bVar20" identifier = (binary_expression "(!bVar20 && !bVar19) == bVar20" (parenthesized_expression "(!bVar20 && !bVar19)" ( (binary_expression "!bVar20 && !bVar19" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar19) {\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar22 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          bVar20 = false;\n          bVar19 = (!bVar22 && !bVar19) == bVar22;\n          if (!bVar19) {\n            lVar15 = 5;\n            pbVar16 = (byte *)name;\n            pbVar17 = &DAT_005710ea;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);\n            if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }\n          }\n        }" if (parenthesized_expression "(!bVar19)" ( (unary_expression "!bVar19" ! identifier) )) (compound_statement "{\n          lVar15 = 7;\n          pbVar16 = (byte *)name;\n          pbVar17 = (byte *)".dtors";\n          do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar22 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);\n          bVar20 = false;\n          bVar19 = (!bVar22 && !bVar19) == bVar22;\n          if (!bVar19) {\n            lVar15 = 5;\n            pbVar16 = (byte *)name;\n            pbVar17 = &DAT_005710ea;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);\n            if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }\n          }\n        }" { (expression_statement "lVar15 = 7;" (assignment_expression "lVar15 = 7" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".dtors";" (assignment_expression "pbVar17 = (byte *)".dtors"" identifier = (cast_expression "(byte *)".dtors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors"" " string_content "))) ;) (do_statement "do {\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar22 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          } while (bVar19);" do (compound_statement "{\n            if (lVar15 == 0) break;\n            lVar15 = lVar15 + -1;\n            bVar22 = *pbVar16 < *pbVar17;\n            bVar19 = *pbVar16 == *pbVar17;\n            pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n            pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n          }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar22 = *pbVar16 < *pbVar17;" (assignment_expression "bVar22 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar19 = (!bVar22 && !bVar19) == bVar22;" (assignment_expression "bVar19 = (!bVar22 && !bVar19) == bVar22" identifier = (binary_expression "(!bVar22 && !bVar19) == bVar22" (parenthesized_expression "(!bVar22 && !bVar19)" ( (binary_expression "!bVar22 && !bVar19" (unary_expression "!bVar22" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar19) {\n            lVar15 = 5;\n            pbVar16 = (byte *)name;\n            pbVar17 = &DAT_005710ea;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);\n            if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }\n          }" if (parenthesized_expression "(!bVar19)" ( (unary_expression "!bVar19" ! identifier) )) (compound_statement "{\n            lVar15 = 5;\n            pbVar16 = (byte *)name;\n            pbVar17 = &DAT_005710ea;\n            do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);\n            if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }\n          }" { (expression_statement "lVar15 = 5;" (assignment_expression "lVar15 = 5" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = &DAT_005710ea;" (assignment_expression "pbVar17 = &DAT_005710ea" identifier = (pointer_expression "&DAT_005710ea" & identifier)) ;) (do_statement "do {\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            } while (bVar19);" do (compound_statement "{\n              if (lVar15 == 0) break;\n              lVar15 = lVar15 + -1;\n              bVar20 = *pbVar16 < *pbVar17;\n              bVar19 = *pbVar16 == *pbVar17;\n              pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n              pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n            }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar16 < *pbVar17;" (assignment_expression "bVar20 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (if_statement "if ((!bVar20 && !bVar19) != bVar20) {\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }" if (parenthesized_expression "((!bVar20 && !bVar19) != bVar20)" ( (binary_expression "(!bVar20 && !bVar19) != bVar20" (parenthesized_expression "(!bVar20 && !bVar19)" ( (binary_expression "!bVar20 && !bVar19" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) != identifier) )) (compound_statement "{\n              puVar1 = &os->field_0xca;\n              bVar19 = false;\n              *puVar1 = *puVar1 | 0x40;\n              bVar22 = *puVar1 == '\0';\n              lVar15 = 0xc;\n              pbVar16 = (byte *)name;\n              pbVar17 = (byte *)".debug_info";\n              do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);\n              bVar20 = false;\n              bVar19 = (!bVar19 && !bVar22) == bVar19;\n              if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              pOVar12->free_space_fill_ = pOVar9;\n              sVar10 = Output_fill_debug_info::do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);\n              (pOVar12->free_list_).min_hole_ = sVar10;\n              pOVar12 = os;\n            }" { (expression_statement "puVar1 = &os->field_0xca;" (assignment_expression "puVar1 = &os->field_0xca" identifier = (pointer_expression "&os->field_0xca" & (field_expression "os->field_0xca" identifier -> field_identifier))) ;) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "*puVar1 = *puVar1 | 0x40;" (assignment_expression "*puVar1 = *puVar1 | 0x40" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 0x40" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) (expression_statement "bVar22 = *puVar1 == '\0';" (assignment_expression "bVar22 = *puVar1 == '\0'" identifier = (binary_expression "*puVar1 == '\0'" (pointer_expression "*puVar1" * identifier) == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "lVar15 = 0xc;" (assignment_expression "lVar15 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".debug_info";" (assignment_expression "pbVar17 = (byte *)".debug_info"" identifier = (cast_expression "(byte *)".debug_info"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_info"" " string_content "))) ;) (do_statement "do {\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              } while (bVar22);" do (compound_statement "{\n                if (lVar15 == 0) break;\n                lVar15 = lVar15 + -1;\n                bVar19 = *pbVar16 < *pbVar17;\n                bVar22 = *pbVar16 == *pbVar17;\n                pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n              }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar19 = *pbVar16 < *pbVar17;" (assignment_expression "bVar19 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar22 = *pbVar16 == *pbVar17;" (assignment_expression "bVar22 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar22)" ( identifier )) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (expression_statement "bVar19 = (!bVar19 && !bVar22) == bVar19;" (assignment_expression "bVar19 = (!bVar19 && !bVar22) == bVar19" identifier = (binary_expression "(!bVar19 && !bVar22) == bVar19" (parenthesized_expression "(!bVar19 && !bVar22)" ( (binary_expression "!bVar19 && !bVar22" (unary_expression "!bVar19" ! identifier) && (unary_expression "!bVar22" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar19) {\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }\n              else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }" if (parenthesized_expression "(bVar19)" ( identifier )) (compound_statement "{\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 0;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }" { (expression_statement "pOVar9 = (Output_fill *)operator_new(0x10);" (assignment_expression "pOVar9 = (Output_fill *)operator_new(0x10)" identifier = (cast_expression "(Output_fill *)operator_new(0x10)" ( (type_descriptor "Output_fill *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;" (assignment_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10" (field_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill" (parenthesized_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)" ( (cast_expression "(Output_fill *)&pOVar9->_vptr_Output_fill" ( (type_descriptor "Output_fill *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar9->_vptr_Output_fill" & (field_expression "pOVar9->_vptr_Output_fill" identifier -> field_identifier))) )) -> field_identifier) = (cast_expression "(_func_int_varargs **)&DAT_00672c10" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_00672c10" & identifier))) ;) (if_statement "if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }" if (parenthesized_expression "(parameters->target_ == (Target *)0x0)" ( (binary_expression "parameters->target_ == (Target *)0x0" (field_expression "parameters->target_" identifier -> field_identifier) == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }" { comment comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "bVar19 = parameters->target_->pti_->is_big_endian;" (assignment_expression "bVar19 = parameters->target_->pti_->is_big_endian" identifier = (field_expression "parameters->target_->pti_->is_big_endian" (field_expression "parameters->target_->pti_" (field_expression "parameters->target_" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) (expression_statement "pOVar9->field_0x9 = 0;" (assignment_expression "pOVar9->field_0x9 = 0" (field_expression "pOVar9->field_0x9" identifier -> field_identifier) = number_literal) ;) (expression_statement "pOVar9->is_big_endian_ = bVar19;" (assignment_expression "pOVar9->is_big_endian_ = bVar19" (field_expression "pOVar9->is_big_endian_" identifier -> field_identifier) = identifier) ;) (expression_statement "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;" (assignment_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840" (field_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill" (parenthesized_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)" ( (cast_expression "(Output_fill *)&pOVar9->_vptr_Output_fill" ( (type_descriptor "Output_fill *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar9->_vptr_Output_fill" & (field_expression "pOVar9->_vptr_Output_fill" identifier -> field_identifier))) )) -> field_identifier) = (cast_expression "(_func_int_varargs **)&PTR__Output_fill_debug_info_00657840" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&PTR__Output_fill_debug_info_00657840" & identifier))) ;) }) (else_clause "else {\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }" else (compound_statement "{\n                lVar15 = 0xd;\n                pbVar16 = (byte *)name;\n                pbVar17 = (byte *)".debug_types";\n                do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);\n                bVar22 = false;\n                bVar19 = (!bVar20 && !bVar19) == bVar20;\n                if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }\n                pOVar9 = (Output_fill *)operator_new(0x10);\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;\n                if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }\n                bVar19 = parameters->target_->pti_->is_big_endian;\n                pOVar9->field_0x9 = 1;\n                pOVar9->is_big_endian_ = bVar19;\n                ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;\n              }" { (expression_statement "lVar15 = 0xd;" (assignment_expression "lVar15 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)name;" (assignment_expression "pbVar16 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar17 = (byte *)".debug_types";" (assignment_expression "pbVar17 = (byte *)".debug_types"" identifier = (cast_expression "(byte *)".debug_types"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_types"" " string_content "))) ;) (do_statement "do {\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                } while (bVar19);" do (compound_statement "{\n                  if (lVar15 == 0) break;\n                  lVar15 = lVar15 + -1;\n                  bVar20 = *pbVar16 < *pbVar17;\n                  bVar19 = *pbVar16 == *pbVar17;\n                  pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n                }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar20 = *pbVar16 < *pbVar17;" (assignment_expression "bVar20 = *pbVar16 < *pbVar17" identifier = (binary_expression "*pbVar16 < *pbVar17" (pointer_expression "*pbVar16" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar19 = *pbVar16 == *pbVar17;" (assignment_expression "bVar19 = *pbVar16 == *pbVar17" identifier = (binary_expression "*pbVar16 == *pbVar17" (pointer_expression "*pbVar16" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) (expression_statement "bVar19 = (!bVar20 && !bVar19) == bVar20;" (assignment_expression "bVar19 = (!bVar20 && !bVar19) == bVar20" identifier = (binary_expression "(!bVar20 && !bVar19) == bVar20" (parenthesized_expression "(!bVar20 && !bVar19)" ( (binary_expression "!bVar20 && !bVar19" (unary_expression "!bVar20" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar19) {\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }" if (parenthesized_expression "(!bVar19)" ( (unary_expression "!bVar19" ! identifier) )) (compound_statement "{\n                  lVar15 = 0xc;\n                  pbVar16 = (byte *)".debug_line";\n                  do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);\n                  if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }\n                  goto LAB_0037f3c1;\n                }" { (expression_statement "lVar15 = 0xc;" (assignment_expression "lVar15 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)".debug_line";" (assignment_expression "pbVar16 = (byte *)".debug_line"" identifier = (cast_expression "(byte *)".debug_line"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_line"" " string_content "))) ;) (do_statement "do {\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  } while (bVar19);" do (compound_statement "{\n                    if (lVar15 == 0) break;\n                    lVar15 = lVar15 + -1;\n                    bVar22 = (byte)*name < *pbVar16;\n                    bVar19 = *name == *pbVar16;\n                    name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);\n                    pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;\n                  }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "bVar22 = (byte)*name < *pbVar16;" (assignment_expression "bVar22 = (byte)*name < *pbVar16" identifier = (binary_expression "(byte)*name < *pbVar16" (binary_expression "(byte)*name" (parenthesized_expression "(byte)" ( identifier )) * identifier) < (pointer_expression "*pbVar16" * identifier))) ;) (expression_statement "bVar19 = *name == *pbVar16;" (assignment_expression "bVar19 = *name == *pbVar16" identifier = (binary_expression "*name == *pbVar16" (pointer_expression "*name" * identifier) == (pointer_expression "*pbVar16" * identifier))) ;) (expression_statement "name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1);" (assignment_expression "name = (char *)((byte *)name + (ulong)bVar24 * -2 + 1)" identifier = (cast_expression "(char *)((byte *)name + (ulong)bVar24 * -2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)name + (ulong)bVar24 * -2 + 1)" ( (binary_expression "(byte *)name + (ulong)bVar24 * -2 + 1" (binary_expression "(byte *)name + (ulong)bVar24 * -2" (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (if_statement "if ((!bVar22 && !bVar19) == bVar22) {\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }" if (parenthesized_expression "((!bVar22 && !bVar19) == bVar22)" ( (binary_expression "(!bVar22 && !bVar19) == bVar22" (parenthesized_expression "(!bVar22 && !bVar19)" ( (binary_expression "!bVar22 && !bVar19" (unary_expression "!bVar22" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) == identifier) )) (compound_statement "{\n                    pOVar9 = (Output_fill *)operator_new(0x10);\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;\n                    if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }\n                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;\n                    ((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;\n                    pOVar12->free_space_fill_ = pOVar9;\n                    sVar10 = Output_fill_debug_line::do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);\n                    (pOVar12->free_list_).min_hole_ = sVar10;\n                    pOVar12 = os;\n                  }" { (expression_statement "pOVar9 = (Output_fill *)operator_new(0x10);" (assignment_expression "pOVar9 = (Output_fill *)operator_new(0x10)" identifier = (cast_expression "(Output_fill *)operator_new(0x10)" ( (type_descriptor "Output_fill *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10;" (assignment_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&DAT_00672c10" (field_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill" (parenthesized_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)" ( (cast_expression "(Output_fill *)&pOVar9->_vptr_Output_fill" ( (type_descriptor "Output_fill *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar9->_vptr_Output_fill" & (field_expression "pOVar9->_vptr_Output_fill" identifier -> field_identifier))) )) -> field_identifier) = (cast_expression "(_func_int_varargs **)&DAT_00672c10" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_00672c10" & identifier))) ;) (if_statement "if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }" if (parenthesized_expression "(parameters->target_ == (Target *)0x0)" ( (binary_expression "parameters->target_ == (Target *)0x0" (field_expression "parameters->target_" identifier -> field_identifier) == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */\n                      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                    }" { comment comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;" (assignment_expression "pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian" (field_expression "pOVar9->is_big_endian_" identifier -> field_identifier) = (field_expression "parameters->target_->pti_->is_big_endian" (field_expression "parameters->target_->pti_" (field_expression "parameters->target_" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) (expression_statement "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870;" (assignment_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                         (_func_int_varargs **)&PTR__Output_fill_debug_line_00657870" (field_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill" (parenthesized_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)" ( (cast_expression "(Output_fill *)&pOVar9->_vptr_Output_fill" ( (type_descriptor "Output_fill *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar9->_vptr_Output_fill" & (field_expression "pOVar9->_vptr_Output_fill" identifier -> field_identifier))) )) -> field_identifier) = (cast_expression "(_func_int_varargs **)&PTR__Output_fill_debug_line_00657870" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&PTR__Output_fill_debug_line_00657870" & identifier))) ;) (expression_statement "pOVar12->free_space_fill_ = pOVar9;" (assignment_expression "pOVar12->free_space_fill_ = pOVar9" (field_expression "pOVar12->free_space_fill_" identifier -> field_identifier) = identifier) ;) (ERROR "sVar10 = Output_fill_debug_line::" (assignment_expression "sVar10 = Output_fill_debug_line" identifier = identifier) : :) (expression_statement "do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9);" (call_expression "do_minimum_hole_size\n                                       ((Output_fill_debug_line *)pOVar9)" identifier (argument_list "((Output_fill_debug_line *)pOVar9)" ( (cast_expression "(Output_fill_debug_line *)pOVar9" ( (type_descriptor "Output_fill_debug_line *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "(pOVar12->free_list_).min_hole_ = sVar10;" (assignment_expression "(pOVar12->free_list_).min_hole_ = sVar10" (field_expression "(pOVar12->free_list_).min_hole_" (parenthesized_expression "(pOVar12->free_list_)" ( (field_expression "pOVar12->free_list_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "pOVar12 = os;" (assignment_expression "pOVar12 = os" identifier = identifier) ;) })) (goto_statement "goto LAB_0037f3c1;" goto statement_identifier ;) })) (expression_statement "pOVar9 = (Output_fill *)operator_new(0x10);" (assignment_expression "pOVar9 = (Output_fill *)operator_new(0x10)" identifier = (cast_expression "(Output_fill *)operator_new(0x10)" ( (type_descriptor "Output_fill *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10;" (assignment_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&DAT_00672c10" (field_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill" (parenthesized_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)" ( (cast_expression "(Output_fill *)&pOVar9->_vptr_Output_fill" ( (type_descriptor "Output_fill *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar9->_vptr_Output_fill" & (field_expression "pOVar9->_vptr_Output_fill" identifier -> field_identifier))) )) -> field_identifier) = (cast_expression "(_func_int_varargs **)&DAT_00672c10" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_00672c10" & identifier))) ;) (if_statement "if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }" if (parenthesized_expression "(parameters->target_ == (Target *)0x0)" ( (binary_expression "parameters->target_ == (Target *)0x0" (field_expression "parameters->target_" identifier -> field_identifier) == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */\n                  do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n                }" { comment comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "bVar19 = parameters->target_->pti_->is_big_endian;" (assignment_expression "bVar19 = parameters->target_->pti_->is_big_endian" identifier = (field_expression "parameters->target_->pti_->is_big_endian" (field_expression "parameters->target_->pti_" (field_expression "parameters->target_" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) (expression_statement "pOVar9->field_0x9 = 1;" (assignment_expression "pOVar9->field_0x9 = 1" (field_expression "pOVar9->field_0x9" identifier -> field_identifier) = number_literal) ;) (expression_statement "pOVar9->is_big_endian_ = bVar19;" (assignment_expression "pOVar9->is_big_endian_ = bVar19" (field_expression "pOVar9->is_big_endian_" identifier -> field_identifier) = identifier) ;) (expression_statement "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840;" (assignment_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =\n                     (_func_int_varargs **)&PTR__Output_fill_debug_info_00657840" (field_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill" (parenthesized_expression "((Output_fill *)&pOVar9->_vptr_Output_fill)" ( (cast_expression "(Output_fill *)&pOVar9->_vptr_Output_fill" ( (type_descriptor "Output_fill *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar9->_vptr_Output_fill" & (field_expression "pOVar9->_vptr_Output_fill" identifier -> field_identifier))) )) -> field_identifier) = (cast_expression "(_func_int_varargs **)&PTR__Output_fill_debug_info_00657840" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&PTR__Output_fill_debug_info_00657840" & identifier))) ;) }))) (expression_statement "pOVar12->free_space_fill_ = pOVar9;" (assignment_expression "pOVar12->free_space_fill_ = pOVar9" (field_expression "pOVar12->free_space_fill_" identifier -> field_identifier) = identifier) ;) (ERROR "sVar10 = Output_fill_debug_info::" (assignment_expression "sVar10 = Output_fill_debug_info" identifier = identifier) : :) (expression_statement "do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9);" (call_expression "do_minimum_hole_size\n                                 ((Output_fill_debug_info *)pOVar9)" identifier (argument_list "((Output_fill_debug_info *)pOVar9)" ( (cast_expression "(Output_fill_debug_info *)pOVar9" ( (type_descriptor "Output_fill_debug_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "(pOVar12->free_list_).min_hole_ = sVar10;" (assignment_expression "(pOVar12->free_list_).min_hole_ = sVar10" (field_expression "(pOVar12->free_list_).min_hole_" (parenthesized_expression "(pOVar12->free_list_)" ( (field_expression "pOVar12->free_list_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "pOVar12 = os;" (assignment_expression "pOVar12 = os" identifier = identifier) ;) })) })) })) })) })) })))) (labeled_statement "LAB_0037f3c1:\n  if (this->sections_are_attached_ != false) {\n    if (parameters->target_ == (Target *)0x0) {\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n    attach_section_to_segment(this,parameters->target_,pOVar12);\n    pOVar12 = os;\n  }" statement_identifier : (if_statement "if (this->sections_are_attached_ != false) {\n    if (parameters->target_ == (Target *)0x0) {\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n    attach_section_to_segment(this,parameters->target_,pOVar12);\n    pOVar12 = os;\n  }" if (parenthesized_expression "(this->sections_are_attached_ != false)" ( (binary_expression "this->sections_are_attached_ != false" (field_expression "this->sections_are_attached_" identifier -> field_identifier) != false) )) (compound_statement "{\n    if (parameters->target_ == (Target *)0x0) {\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }\n    attach_section_to_segment(this,parameters->target_,pOVar12);\n    pOVar12 = os;\n  }" { (if_statement "if (parameters->target_ == (Target *)0x0) {\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }" if (parenthesized_expression "(parameters->target_ == (Target *)0x0)" ( (binary_expression "parameters->target_ == (Target *)0x0" (field_expression "parameters->target_" identifier -> field_identifier) == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n    }" { (labeled_statement "LAB_0037fb03:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x69,"target");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;)) })) (expression_statement "attach_section_to_segment(this,parameters->target_,pOVar12);" (call_expression "attach_section_to_segment(this,parameters->target_,pOVar12)" identifier (argument_list "(this,parameters->target_,pOVar12)" ( identifier , (field_expression "parameters->target_" identifier -> field_identifier) , identifier ))) ;) (expression_statement "pOVar12 = os;" (assignment_expression "pOVar12 = os" identifier = identifier) ;) }))) (return_statement "return pOVar12;" return identifier ;) }))
(translation_unit "undefined8 *\nFUN_0037f160(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)\n\n{\n  long *plVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  size_t sVar7;\n  undefined8 *puVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  ulong uVar14;\n  bool bVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  undefined1 uVar19;\n  byte bVar20;\n  char local_59;\n  undefined8 *local_40 [2];\n  \n  bVar20 = 0;\n  uVar14 = param_5 & 0xffffffff;\n  if ((param_4 & 2) != 0) goto LAB_0037f230;\n  lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  bVar15 = false;\n  bVar18 = lVar10 == 0;\n  if (bVar18) goto LAB_0037f97a;\n  lVar9 = 5;\n  pbVar12 = *(byte **)(lVar10 + 0xf80);\n  pbVar13 = (byte *)0x57596e;\n  do {\n    if (lVar9 == 0) break;\n    lVar9 = lVar9 + -1;\n    bVar15 = *pbVar12 < *pbVar13;\n    bVar18 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + 1;\n    pbVar13 = pbVar13 + 1;\n  } while (bVar18);\n  bVar16 = false;\n  bVar15 = (!bVar15 && !bVar18) == bVar15;\n  if (bVar15) {\nLAB_0037f1e5:\n    bVar15 = false;\n    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';\n    if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }\n  }\n  else {\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    \n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }\n  puVar8 = local_40[0];\n  if (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;\n    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);\n    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;\n    if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }\n    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;\n  }\n  else {\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }\n  if (((int)param_5 == 0) && ((param_4 & 2) != 0)) {\n    uVar3 = FUN_0037b280(param_1,puVar8,local_59);\n    uVar14 = (ulong)uVar3;\n    puVar8 = local_40[0];\n  }\n  puVar2 = PTR_DAT_0067cb08;\n  uVar3 = (uint)uVar14;\n  *(uint *)(puVar8 + 0xf) = uVar3;\n  plVar1 = *(long **)(puVar2 + 0x18);\n  if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n  if (*(code **)(*plVar1 + 0x18) == FUN_001a49c0) {\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;\nLAB_0037f2d9:\n    *puVar8 = local_40[0];\n    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;\n  }\n  else {\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }\n  puVar8 = local_40[0];\n  lVar10 = *(long *)(param_1 + 8);\n  lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  if (*(char *)(lVar10 + 0x148) == '\0') {\n    if (lVar9 == 0) {\nLAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar15 = false;\n    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';\n    if (!bVar18) goto LAB_0037f347;\n    lVar11 = 0xc;\n    pbVar12 = param_2;\n    pbVar13 = (byte *)".init_array";\n    do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar18) == bVar15;\n    if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';\n    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }\n  bVar18 = false;\n  lVar10 = 5;\n  pbVar12 = *(byte **)(lVar9 + 0x5b00);\n  pbVar13 = (byte *)0x575186;\n  do {\n    if (lVar10 == 0) break;\n    lVar10 = lVar10 + -1;\n    bVar18 = *pbVar12 < *pbVar13;\n    bVar15 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n  } while (bVar15);\n  if ((!bVar18 && !bVar15) == bVar18) {\n    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;\n  }\n  if (param_3 == 3) {\n    bVar15 = false;\n    bVar18 = *(char *)(param_1 + 0x370) == '\0';\n    if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0037f3c1:\n  if (*(char *)(param_1 + 0x369) != '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }\n  return puVar8;\n}\n\n" (function_definition "undefined8 *\nFUN_0037f160(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)\n\n{\n  long *plVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  size_t sVar7;\n  undefined8 *puVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  ulong uVar14;\n  bool bVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  undefined1 uVar19;\n  byte bVar20;\n  char local_59;\n  undefined8 *local_40 [2];\n  \n  bVar20 = 0;\n  uVar14 = param_5 & 0xffffffff;\n  if ((param_4 & 2) != 0) goto LAB_0037f230;\n  lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  bVar15 = false;\n  bVar18 = lVar10 == 0;\n  if (bVar18) goto LAB_0037f97a;\n  lVar9 = 5;\n  pbVar12 = *(byte **)(lVar10 + 0xf80);\n  pbVar13 = (byte *)0x57596e;\n  do {\n    if (lVar9 == 0) break;\n    lVar9 = lVar9 + -1;\n    bVar15 = *pbVar12 < *pbVar13;\n    bVar18 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + 1;\n    pbVar13 = pbVar13 + 1;\n  } while (bVar18);\n  bVar16 = false;\n  bVar15 = (!bVar15 && !bVar18) == bVar15;\n  if (bVar15) {\nLAB_0037f1e5:\n    bVar15 = false;\n    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';\n    if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }\n  }\n  else {\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    \n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }\n  puVar8 = local_40[0];\n  if (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;\n    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);\n    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;\n    if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }\n    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;\n  }\n  else {\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }\n  if (((int)param_5 == 0) && ((param_4 & 2) != 0)) {\n    uVar3 = FUN_0037b280(param_1,puVar8,local_59);\n    uVar14 = (ulong)uVar3;\n    puVar8 = local_40[0];\n  }\n  puVar2 = PTR_DAT_0067cb08;\n  uVar3 = (uint)uVar14;\n  *(uint *)(puVar8 + 0xf) = uVar3;\n  plVar1 = *(long **)(puVar2 + 0x18);\n  if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n  if (*(code **)(*plVar1 + 0x18) == FUN_001a49c0) {\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;\nLAB_0037f2d9:\n    *puVar8 = local_40[0];\n    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;\n  }\n  else {\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }\n  puVar8 = local_40[0];\n  lVar10 = *(long *)(param_1 + 8);\n  lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  if (*(char *)(lVar10 + 0x148) == '\0') {\n    if (lVar9 == 0) {\nLAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar15 = false;\n    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';\n    if (!bVar18) goto LAB_0037f347;\n    lVar11 = 0xc;\n    pbVar12 = param_2;\n    pbVar13 = (byte *)".init_array";\n    do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar18) == bVar15;\n    if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';\n    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }\n  bVar18 = false;\n  lVar10 = 5;\n  pbVar12 = *(byte **)(lVar9 + 0x5b00);\n  pbVar13 = (byte *)0x575186;\n  do {\n    if (lVar10 == 0) break;\n    lVar10 = lVar10 + -1;\n    bVar18 = *pbVar12 < *pbVar13;\n    bVar15 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n  } while (bVar15);\n  if ((!bVar18 && !bVar15) == bVar18) {\n    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;\n  }\n  if (param_3 == 3) {\n    bVar15 = false;\n    bVar18 = *(char *)(param_1 + 0x370) == '\0';\n    if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0037f3c1:\n  if (*(char *)(param_1 + 0x369) != '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }\n  return puVar8;\n}" type_identifier (pointer_declarator "*\nFUN_0037f160(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)" * (function_declarator "FUN_0037f160(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)" identifier (parameter_list "(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "ulong param_4" type_identifier identifier) , (parameter_declaration "ulong param_5" type_identifier identifier) , (parameter_declaration "char param_6" primitive_type identifier) )))) (compound_statement "{\n  long *plVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  size_t sVar7;\n  undefined8 *puVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  ulong uVar14;\n  bool bVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  undefined1 uVar19;\n  byte bVar20;\n  char local_59;\n  undefined8 *local_40 [2];\n  \n  bVar20 = 0;\n  uVar14 = param_5 & 0xffffffff;\n  if ((param_4 & 2) != 0) goto LAB_0037f230;\n  lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  bVar15 = false;\n  bVar18 = lVar10 == 0;\n  if (bVar18) goto LAB_0037f97a;\n  lVar9 = 5;\n  pbVar12 = *(byte **)(lVar10 + 0xf80);\n  pbVar13 = (byte *)0x57596e;\n  do {\n    if (lVar9 == 0) break;\n    lVar9 = lVar9 + -1;\n    bVar15 = *pbVar12 < *pbVar13;\n    bVar18 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + 1;\n    pbVar13 = pbVar13 + 1;\n  } while (bVar18);\n  bVar16 = false;\n  bVar15 = (!bVar15 && !bVar18) == bVar15;\n  if (bVar15) {\nLAB_0037f1e5:\n    bVar15 = false;\n    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';\n    if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }\n  }\n  else {\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    \n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }\n  puVar8 = local_40[0];\n  if (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;\n    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);\n    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;\n    if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }\n    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;\n  }\n  else {\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }\n  if (((int)param_5 == 0) && ((param_4 & 2) != 0)) {\n    uVar3 = FUN_0037b280(param_1,puVar8,local_59);\n    uVar14 = (ulong)uVar3;\n    puVar8 = local_40[0];\n  }\n  puVar2 = PTR_DAT_0067cb08;\n  uVar3 = (uint)uVar14;\n  *(uint *)(puVar8 + 0xf) = uVar3;\n  plVar1 = *(long **)(puVar2 + 0x18);\n  if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n  if (*(code **)(*plVar1 + 0x18) == FUN_001a49c0) {\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;\nLAB_0037f2d9:\n    *puVar8 = local_40[0];\n    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;\n  }\n  else {\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }\n  puVar8 = local_40[0];\n  lVar10 = *(long *)(param_1 + 8);\n  lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  if (*(char *)(lVar10 + 0x148) == '\0') {\n    if (lVar9 == 0) {\nLAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar15 = false;\n    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';\n    if (!bVar18) goto LAB_0037f347;\n    lVar11 = 0xc;\n    pbVar12 = param_2;\n    pbVar13 = (byte *)".init_array";\n    do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar18) == bVar15;\n    if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';\n    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }\n  bVar18 = false;\n  lVar10 = 5;\n  pbVar12 = *(byte **)(lVar9 + 0x5b00);\n  pbVar13 = (byte *)0x575186;\n  do {\n    if (lVar10 == 0) break;\n    lVar10 = lVar10 + -1;\n    bVar18 = *pbVar12 < *pbVar13;\n    bVar15 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n  } while (bVar15);\n  if ((!bVar18 && !bVar15) == bVar18) {\n    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;\n  }\n  if (param_3 == 3) {\n    bVar15 = false;\n    bVar18 = *(char *)(param_1 + 0x370) == '\0';\n    if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0037f3c1:\n  if (*(char *)(param_1 + 0x369) != '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }\n  return puVar8;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "undefined1 uVar17;" type_identifier identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "undefined1 uVar19;" type_identifier identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "char local_59;" primitive_type identifier ;) (declaration "undefined8 *local_40 [2];" type_identifier (pointer_declarator "*local_40 [2]" * (array_declarator "local_40 [2]" identifier [ number_literal ])) ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = param_5 & 0xffffffff;" (assignment_expression "uVar14 = param_5 & 0xffffffff" identifier = (binary_expression "param_5 & 0xffffffff" identifier & number_literal)) ;) (if_statement "if ((param_4 & 2) != 0) goto LAB_0037f230;" if (parenthesized_expression "((param_4 & 2) != 0)" ( (binary_expression "(param_4 & 2) != 0" (parenthesized_expression "(param_4 & 2)" ( (binary_expression "param_4 & 2" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0037f230;" goto statement_identifier ;)) (expression_statement "lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10);" (assignment_expression "lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10)" identifier = (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar18 = lVar10 == 0;" (assignment_expression "bVar18 = lVar10 == 0" identifier = (binary_expression "lVar10 == 0" identifier == number_literal)) ;) (if_statement "if (bVar18) goto LAB_0037f97a;" if (parenthesized_expression "(bVar18)" ( identifier )) (goto_statement "goto LAB_0037f97a;" goto statement_identifier ;)) (expression_statement "lVar9 = 5;" (assignment_expression "lVar9 = 5" identifier = number_literal) ;) (expression_statement "pbVar12 = *(byte **)(lVar10 + 0xf80);" (assignment_expression "pbVar12 = *(byte **)(lVar10 + 0xf80)" identifier = (pointer_expression "*(byte **)(lVar10 + 0xf80)" * (cast_expression "(byte **)(lVar10 + 0xf80)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar10 + 0xf80)" ( (binary_expression "lVar10 + 0xf80" identifier + number_literal) ))))) ;) (expression_statement "pbVar13 = (byte *)0x57596e;" (assignment_expression "pbVar13 = (byte *)0x57596e" identifier = (cast_expression "(byte *)0x57596e" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if (lVar9 == 0) break;\n    lVar9 = lVar9 + -1;\n    bVar15 = *pbVar12 < *pbVar13;\n    bVar18 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + 1;\n    pbVar13 = pbVar13 + 1;\n  } while (bVar18);" do (compound_statement "{\n    if (lVar9 == 0) break;\n    lVar9 = lVar9 + -1;\n    bVar15 = *pbVar12 < *pbVar13;\n    bVar18 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + 1;\n    pbVar13 = pbVar13 + 1;\n  }" { (if_statement "if (lVar9 == 0) break;" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\nLAB_0037f1e5:\n    bVar15 = false;\n    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';\n    if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }\n  }\n  else {\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    \n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\nLAB_0037f1e5:\n    bVar15 = false;\n    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';\n    if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }\n  }" { (labeled_statement "LAB_0037f1e5:\n    bVar15 = false;" statement_identifier : (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;)) (expression_statement "bVar18 = *(char *)(lVar10 + 0x5689) == '\0';" (assignment_expression "bVar18 = *(char *)(lVar10 + 0x5689) == '\0'" identifier = (binary_expression "*(char *)(lVar10 + 0x5689) == '\0'" (pointer_expression "*(char *)(lVar10 + 0x5689)" * (cast_expression "(char *)(lVar10 + 0x5689)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x5689)" ( (binary_expression "lVar10 + 0x5689" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }" { (labeled_statement "LAB_0037f230:\n      bVar15 = param_3 == 0;" statement_identifier : (expression_statement "bVar15 = param_3 == 0;" (assignment_expression "bVar15 = param_3 == 0" identifier = (binary_expression "param_3 == 0" identifier == number_literal)) ;)) (expression_statement "bVar18 = param_3 == 1;" (assignment_expression "bVar18 = param_3 == 1" identifier = (binary_expression "param_3 == 1" identifier == number_literal)) ;) (if_statement "if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }" { (expression_statement "lVar10 = 0xb;" (assignment_expression "lVar10 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".init_array";" (assignment_expression "pbVar12 = (byte *)".init_array"" identifier = (cast_expression "(byte *)".init_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".init_array"" " string_content "))) ;) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" identifier = identifier) ;) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);" do (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n          param_3 = 0xe;\n        }" { (expression_statement "param_3 = 0xe;" (assignment_expression "param_3 = 0xe" identifier = number_literal) ;) }) (else_clause "else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }" else (compound_statement "{\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }" { (expression_statement "lVar10 = 0xe;" (assignment_expression "lVar10 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".preinit_array";" (assignment_expression "pbVar12 = (byte *)".preinit_array"" identifier = (cast_expression "(byte *)".preinit_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".preinit_array"" " string_content "))) ;) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" identifier = identifier) ;) (do_statement "do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);" do (compound_statement "{\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar16 && !bVar15) == bVar16;" (assignment_expression "bVar15 = (!bVar16 && !bVar15) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n            param_3 = 0x10;\n          }" { (expression_statement "param_3 = 0x10;" (assignment_expression "param_3 = 0x10" identifier = number_literal) ;) }) (else_clause "else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }" else (compound_statement "{\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }" { (expression_statement "lVar10 = 0xb;" (assignment_expression "lVar10 = 0xb" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".fini_array";" (assignment_expression "pbVar12 = (byte *)".fini_array"" identifier = (cast_expression "(byte *)".fini_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".fini_array"" " string_content "))) ;) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" identifier = identifier) ;) (do_statement "do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);" do (compound_statement "{\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }" if (parenthesized_expression "((!bVar18 && !bVar15) == bVar18)" ( (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" ( (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (compound_statement "{\n              param_3 = 0xf;\n            }" { (expression_statement "param_3 = 0xf;" (assignment_expression "param_3 = 0xf" identifier = number_literal) ;) })) }))) }))) })) (expression_statement "plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);" (assignment_expression "plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18)" identifier = (pointer_expression "*(long **)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long **)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (plVar1 == (long *)0x0) goto LAB_0037fb03;" if (parenthesized_expression "(plVar1 == (long *)0x0)" ( (binary_expression "plVar1 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0037fb03;" goto statement_identifier ;)) (expression_statement "local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);" (assignment_expression "local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4)" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (cast_expression "(undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4)" (parenthesized_expression "(**(code **)(*plVar1 + 0xd8))" ( (pointer_expression "**(code **)(*plVar1 + 0xd8)" * (pointer_expression "*(code **)(*plVar1 + 0xd8)" * (cast_expression "(code **)(*plVar1 + 0xd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0xd8)" ( (binary_expression "*plVar1 + 0xd8" (pointer_expression "*plVar1" * identifier) + number_literal) ))))) )) (argument_list "(plVar1,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))))) ;) }) (else_clause "else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }" else (compound_statement "{\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }" { (expression_statement "lVar10 = 0xe;" (assignment_expression "lVar10 = 0xe" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".debug_abbrev";" (assignment_expression "pbVar12 = (byte *)".debug_abbrev"" identifier = (cast_expression "(byte *)".debug_abbrev"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_abbrev"" " string_content "))) ;) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" identifier = identifier) ;) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);" do (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }" { (expression_statement "puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);" (assignment_expression "puVar8 = (undefined8 *)FUN_0049cb70(0x1a0)" identifier = (cast_expression "(undefined8 *)FUN_0049cb70(0x1a0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb70(0x1a0)" identifier (argument_list "(0x1a0)" ( number_literal ))))) ;) (expression_statement "FUN_003c9d20(puVar8,param_2,param_3,param_4);" (call_expression "FUN_003c9d20(puVar8,param_2,param_3,param_4)" identifier (argument_list "(puVar8,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*puVar8 = &PTR_FUN_006752b8;" (assignment_expression "*puVar8 = &PTR_FUN_006752b8" (pointer_expression "*puVar8" * identifier) = (pointer_expression "&PTR_FUN_006752b8" & identifier)) ;) (expression_statement "puVar8[0x2f] = puVar8 + 0x2d;" (assignment_expression "puVar8[0x2f] = puVar8 + 0x2d" (subscript_expression "puVar8[0x2f]" identifier [ number_literal ]) = (binary_expression "puVar8 + 0x2d" identifier + number_literal)) ;) (expression_statement "puVar8[0x30] = puVar8 + 0x2d;" (assignment_expression "puVar8[0x30] = puVar8 + 0x2d" (subscript_expression "puVar8[0x30]" identifier [ number_literal ]) = (binary_expression "puVar8 + 0x2d" identifier + number_literal)) ;) (expression_statement "lVar10 = *(long *)(param_1 + 0x340);" (assignment_expression "lVar10 = *(long *)(param_1 + 0x340)" identifier = (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) ))))) ;) (expression_statement "puVar8[0x29] = 0;" (assignment_expression "puVar8[0x29] = 0" (subscript_expression "puVar8[0x29]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0x2a] = 0;" (assignment_expression "puVar8[0x2a] = 0" (subscript_expression "puVar8[0x2a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0x2b] = 0;" (assignment_expression "puVar8[0x2b] = 0" (subscript_expression "puVar8[0x2b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar8 + 0x2d) = 0;" (assignment_expression "*(undefined4 *)(puVar8 + 0x2d) = 0" (pointer_expression "*(undefined4 *)(puVar8 + 0x2d)" * (cast_expression "(undefined4 *)(puVar8 + 0x2d)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x2d)" ( (binary_expression "puVar8 + 0x2d" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar8[0x2e] = 0;" (assignment_expression "puVar8[0x2e] = 0" (subscript_expression "puVar8[0x2e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0x31] = 0;" (assignment_expression "puVar8[0x31] = 0" (subscript_expression "puVar8[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 0x32) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x32) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x32)" * (cast_expression "(undefined1 *)(puVar8 + 0x32)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x32)" ( (binary_expression "puVar8 + 0x32" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((long)puVar8 + 0x194) = 0;" (assignment_expression "*(undefined4 *)((long)puVar8 + 0x194) = 0" (pointer_expression "*(undefined4 *)((long)puVar8 + 0x194)" * (cast_expression "(undefined4 *)((long)puVar8 + 0x194)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + 0x194)" ( (binary_expression "(long)puVar8 + 0x194" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 0x33) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x33) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x33)" * (cast_expression "(undefined1 *)(puVar8 + 0x33)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x33)" ( (binary_expression "puVar8 + 0x33" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;" (assignment_expression "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" * (cast_expression "(byte *)(puVar8 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x19)" ( (binary_expression "puVar8 + 0x19" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" * (cast_expression "(byte *)(puVar8 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x19)" ( (binary_expression "puVar8 + 0x19" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(undefined8 **)(param_1 + 0x338) = puVar8;" (assignment_expression "*(undefined8 **)(param_1 + 0x338) = puVar8" (pointer_expression "*(undefined8 **)(param_1 + 0x338)" * (cast_expression "(undefined8 **)(param_1 + 0x338)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x338)" ( (binary_expression "param_1 + 0x338" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_40[0] = puVar8;" (assignment_expression "local_40[0] = puVar8" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }" if (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }" { (expression_statement "*(undefined8 **)(lVar10 + 0x160) = puVar8;" (assignment_expression "*(undefined8 **)(lVar10 + 0x160) = puVar8" (pointer_expression "*(undefined8 **)(lVar10 + 0x160)" * (cast_expression "(undefined8 **)(lVar10 + 0x160)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar10 + 0x160)" ( (binary_expression "lVar10 + 0x160" identifier + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }" else (compound_statement "{\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }" { (expression_statement "lVar10 = 0xc;" (assignment_expression "lVar10 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".debug_info";" (assignment_expression "pbVar12 = (byte *)".debug_info"" identifier = (cast_expression "(byte *)".debug_info"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_info"" " string_content "))) ;) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" identifier = identifier) ;) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;" if (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" ( (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0037f230;" goto statement_identifier ;)) (expression_statement "puVar8 = (undefined8 *)FUN_0049cb70(0x170);" (assignment_expression "puVar8 = (undefined8 *)FUN_0049cb70(0x170)" identifier = (cast_expression "(undefined8 *)FUN_0049cb70(0x170)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb70(0x170)" identifier (argument_list "(0x170)" ( number_literal ))))) ;) (expression_statement "FUN_003c9d20(puVar8,param_2,param_3,param_4);" (call_expression "FUN_003c9d20(puVar8,param_2,param_3,param_4)" identifier (argument_list "(puVar8,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*puVar8 = &PTR_FUN_00675370;" (assignment_expression "*puVar8 = &PTR_FUN_00675370" (pointer_expression "*puVar8" * identifier) = (pointer_expression "&PTR_FUN_00675370" & identifier)) ;) (expression_statement "lVar10 = *(long *)(param_1 + 0x338);" (assignment_expression "lVar10 = *(long *)(param_1 + 0x338)" identifier = (pointer_expression "*(long *)(param_1 + 0x338)" * (cast_expression "(long *)(param_1 + 0x338)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x338)" ( (binary_expression "param_1 + 0x338" identifier + number_literal) ))))) ;) (expression_statement "puVar8[0x29] = 0;" (assignment_expression "puVar8[0x29] = 0" (subscript_expression "puVar8[0x29]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0x2a] = 0;" (assignment_expression "puVar8[0x2a] = 0" (subscript_expression "puVar8[0x2a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0x2b] = 0;" (assignment_expression "puVar8[0x2b] = 0" (subscript_expression "puVar8[0x2b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 0x2d) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x2d) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x2d)" * (cast_expression "(undefined1 *)(puVar8 + 0x2d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x2d)" ( (binary_expression "puVar8 + 0x2d" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;" (assignment_expression "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" * (cast_expression "(byte *)(puVar8 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x19)" ( (binary_expression "puVar8 + 0x19" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" * (cast_expression "(byte *)(puVar8 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x19)" ( (binary_expression "puVar8 + 0x19" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(undefined8 **)(param_1 + 0x340) = puVar8;" (assignment_expression "*(undefined8 **)(param_1 + 0x340) = puVar8" (pointer_expression "*(undefined8 **)(param_1 + 0x340)" * (cast_expression "(undefined8 **)(param_1 + 0x340)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_40[0] = puVar8;" (assignment_expression "local_40[0] = puVar8" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }" if (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar8[0x2c] = lVar10;\n        }" { (expression_statement "puVar8[0x2c] = lVar10;" (assignment_expression "puVar8[0x2c] = lVar10" (subscript_expression "puVar8[0x2c]" identifier [ number_literal ]) = identifier) ;) })) }))) }))) }) (else_clause "else {\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    \n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }" else (compound_statement "{\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    \n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }" { (expression_statement "lVar9 = 6;" (assignment_expression "lVar9 = 6" identifier = number_literal) ;) (expression_statement "pbVar12 = &DAT_00533552;" (assignment_expression "pbVar12 = &DAT_00533552" identifier = (pointer_expression "&DAT_00533552" & identifier)) ;) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" identifier = identifier) ;) (do_statement "do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);" do (compound_statement "{\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    }" { (if_statement "if (lVar9 == 0) break;" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;" if (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" ( (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0037f1e5;" goto statement_identifier ;)) (expression_statement "puVar8 = (undefined8 *)FUN_0049cb70(0x178);" (assignment_expression "puVar8 = (undefined8 *)FUN_0049cb70(0x178)" identifier = (cast_expression "(undefined8 *)FUN_0049cb70(0x178)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb70(0x178)" identifier (argument_list "(0x178)" ( number_literal ))))) ;) (expression_statement "FUN_003c9d20(puVar8,param_2,param_3,param_4);" (call_expression "FUN_003c9d20(puVar8,param_2,param_3,param_4)" identifier (argument_list "(puVar8,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*puVar8 = &PTR_FUN_00675900;" (assignment_expression "*puVar8 = &PTR_FUN_00675900" (pointer_expression "*puVar8" * identifier) = (pointer_expression "&PTR_FUN_00675900" & identifier)) ;) (expression_statement "puVar8[0x29] = lVar10;" (assignment_expression "puVar8[0x29] = lVar10" (subscript_expression "puVar8[0x29]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[0x2b] = puVar8 + 0x2d;" (assignment_expression "puVar8[0x2b] = puVar8 + 0x2d" (subscript_expression "puVar8[0x2b]" identifier [ number_literal ]) = (binary_expression "puVar8 + 0x2d" identifier + number_literal)) ;) (expression_statement "puVar8[0x2c] = 0;" (assignment_expression "puVar8[0x2c] = 0" (subscript_expression "puVar8[0x2c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 0x2d) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x2d) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x2d)" * (cast_expression "(undefined1 *)(puVar8 + 0x2d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x2d)" ( (binary_expression "puVar8 + 0x2d" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;" (assignment_expression "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" * (cast_expression "(byte *)(puVar8 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x19)" ( (binary_expression "puVar8 + 0x19" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" * (cast_expression "(byte *)(puVar8 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x19)" ( (binary_expression "puVar8 + 0x19" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "local_40[0] = puVar8;" (assignment_expression "local_40[0] = puVar8" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) (if_statement "if (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;\n    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);\n    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;\n    if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }\n    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;\n  }\n  else {\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }" if (parenthesized_expression "(*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')" ( (binary_expression "*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0'" (pointer_expression "*(char *)(*(long *)(param_1 + 8) + 0x148)" * (cast_expression "(char *)(*(long *)(param_1 + 8) + 0x148)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" ( (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;\n    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);\n    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;\n    if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }\n    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;\n  }" { (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;" if (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0037f97a;" goto statement_identifier ;)) (expression_statement "local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);" (assignment_expression "local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59)" identifier = (pointer_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;" if (parenthesized_expression "((local_59 == '\0') || (((uint)param_4 & 3) != 3))" ( (binary_expression "(local_59 == '\0') || (((uint)param_4 & 3) != 3)" (parenthesized_expression "(local_59 == '\0')" ( (binary_expression "local_59 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(((uint)param_4 & 3) != 3)" ( (binary_expression "((uint)param_4 & 3) != 3" (parenthesized_expression "((uint)param_4 & 3)" ( (binary_expression "(uint)param_4 & 3" (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_0037f273;" goto statement_identifier ;)) (if_statement "if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }" { (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar18 = (param_4 & 0x400) == 0;" (assignment_expression "bVar18 = (param_4 & 0x400) == 0" identifier = (binary_expression "(param_4 & 0x400) == 0" (parenthesized_expression "(param_4 & 0x400)" ( (binary_expression "param_4 & 0x400" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (!bVar18) goto LAB_0037f278;" if (parenthesized_expression "(!bVar18)" ( (unary_expression "!bVar18" ! identifier) )) (goto_statement "goto LAB_0037f278;" goto statement_identifier ;)) (expression_statement "lVar10 = 0xd;" (assignment_expression "lVar10 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".data.rel.ro";" (assignment_expression "pbVar13 = (byte *)".data.rel.ro"" identifier = (cast_expression "(byte *)".data.rel.ro"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".data.rel.ro"" " string_content "))) ;) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);" do (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) goto LAB_0037f278;" if (parenthesized_expression "(bVar15)" ( identifier )) (goto_statement "goto LAB_0037f278;" goto statement_identifier ;)) (expression_statement "lVar10 = 0x13;" (assignment_expression "lVar10 = 0x13" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".data.rel.ro.local";" (assignment_expression "pbVar13 = (byte *)".data.rel.ro.local"" identifier = (cast_expression "(byte *)".data.rel.ro.local"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".data.rel.ro.local"" " string_content "))) ;) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);" do (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar16 && !bVar15) == bVar16;" (assignment_expression "bVar15 = (!bVar16 && !bVar15) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }" { (expression_statement "lVar10 = 7;" (assignment_expression "lVar10 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".ctors";" (assignment_expression "pbVar13 = (byte *)".ctors"" identifier = (cast_expression "(byte *)".ctors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors"" " string_content "))) ;) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar18 && !bVar15) == bVar18;" (assignment_expression "bVar15 = (!bVar18 && !bVar15) == bVar18" identifier = (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" ( (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }" { (expression_statement "lVar10 = 7;" (assignment_expression "lVar10 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".dtors";" (assignment_expression "pbVar13 = (byte *)".dtors"" identifier = (cast_expression "(byte *)".dtors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors"" " string_content "))) ;) (do_statement "do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);" do (compound_statement "{\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;" if (parenthesized_expression "(((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0))" ( (binary_expression "((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)" (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" ( (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) != identifier) )) && (parenthesized_expression "(iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)" ( (comma_expression "iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0" (assignment_expression "iVar4 = strcmp((char *)param_2,".jcr")" identifier = (call_expression "strcmp((char *)param_2,".jcr")" identifier (argument_list "((char *)param_2,".jcr")" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal "".jcr"" " string_content ") )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_0037f273;" goto statement_identifier ;)) })) (goto_statement "goto LAB_0037f278;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }" else (compound_statement "{\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }" { (if_statement "if (2 < param_3 - 0xeU) goto LAB_0037f273;" if (parenthesized_expression "(2 < param_3 - 0xeU)" ( (binary_expression "2 < param_3 - 0xeU" number_literal < (binary_expression "param_3 - 0xeU" identifier - number_literal)) )) (goto_statement "goto LAB_0037f273;" goto statement_identifier ;)) (labeled_statement "LAB_0037f278:\n      local_59 = '\0';" statement_identifier : (expression_statement "local_59 = '\0';" (assignment_expression "local_59 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;)) }))) (expression_statement "*(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;" (assignment_expression "*(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20" (pointer_expression "*(byte *)((long)puVar8 + 0xc9)" * (cast_expression "(byte *)((long)puVar8 + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + 0xc9)" ( (binary_expression "(long)puVar8 + 0xc9" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)puVar8 + 0xc9) | 0x20" (pointer_expression "*(byte *)((long)puVar8 + 0xc9)" * (cast_expression "(byte *)((long)puVar8 + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + 0xc9)" ( (binary_expression "(long)puVar8 + 0xc9" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) ;) }) (else_clause "else {\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }" else (compound_statement "{\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }" { (labeled_statement "LAB_0037f273:\n    local_59 = param_6;" statement_identifier : (expression_statement "local_59 = param_6;" (assignment_expression "local_59 = param_6" identifier = identifier) ;)) (if_statement "if (param_6 != '\0') goto LAB_0037f278;" if (parenthesized_expression "(param_6 != '\0')" ( (binary_expression "param_6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0037f278;" goto statement_identifier ;)) }))) (if_statement "if (((int)param_5 == 0) && ((param_4 & 2) != 0)) {\n    uVar3 = FUN_0037b280(param_1,puVar8,local_59);\n    uVar14 = (ulong)uVar3;\n    puVar8 = local_40[0];\n  }" if (parenthesized_expression "(((int)param_5 == 0) && ((param_4 & 2) != 0))" ( (binary_expression "((int)param_5 == 0) && ((param_4 & 2) != 0)" (parenthesized_expression "((int)param_5 == 0)" ( (binary_expression "(int)param_5 == 0" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) && (parenthesized_expression "((param_4 & 2) != 0)" ( (binary_expression "(param_4 & 2) != 0" (parenthesized_expression "(param_4 & 2)" ( (binary_expression "param_4 & 2" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    uVar3 = FUN_0037b280(param_1,puVar8,local_59);\n    uVar14 = (ulong)uVar3;\n    puVar8 = local_40[0];\n  }" { (expression_statement "uVar3 = FUN_0037b280(param_1,puVar8,local_59);" (assignment_expression "uVar3 = FUN_0037b280(param_1,puVar8,local_59)" identifier = (call_expression "FUN_0037b280(param_1,puVar8,local_59)" identifier (argument_list "(param_1,puVar8,local_59)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar14 = (ulong)uVar3;" (assignment_expression "uVar14 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) })) (expression_statement "puVar2 = PTR_DAT_0067cb08;" (assignment_expression "puVar2 = PTR_DAT_0067cb08" identifier = identifier) ;) (expression_statement "uVar3 = (uint)uVar14;" (assignment_expression "uVar3 = (uint)uVar14" identifier = (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(uint *)(puVar8 + 0xf) = uVar3;" (assignment_expression "*(uint *)(puVar8 + 0xf) = uVar3" (pointer_expression "*(uint *)(puVar8 + 0xf)" * (cast_expression "(uint *)(puVar8 + 0xf)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0xf)" ( (binary_expression "puVar8 + 0xf" identifier + number_literal) )))) = identifier) ;) (expression_statement "plVar1 = *(long **)(puVar2 + 0x18);" (assignment_expression "plVar1 = *(long **)(puVar2 + 0x18)" identifier = (pointer_expression "*(long **)(puVar2 + 0x18)" * (cast_expression "(long **)(puVar2 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x18)" ( (binary_expression "puVar2 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (plVar1 == (long *)0x0) goto LAB_0037fb03;" if (parenthesized_expression "(plVar1 == (long *)0x0)" ( (binary_expression "plVar1 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0037fb03;" goto statement_identifier ;)) (if_statement "if (*(code **)(*plVar1 + 0x18) == FUN_001a49c0) {\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;\nLAB_0037f2d9:\n    *puVar8 = local_40[0];\n    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;\n  }\n  else {\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }" if (parenthesized_expression "(*(code **)(*plVar1 + 0x18) == FUN_001a49c0)" ( (binary_expression "*(code **)(*plVar1 + 0x18) == FUN_001a49c0" (pointer_expression "*(code **)(*plVar1 + 0x18)" * (cast_expression "(code **)(*plVar1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0x18)" ( (binary_expression "*plVar1 + 0x18" (pointer_expression "*plVar1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;\nLAB_0037f2d9:\n    *puVar8 = local_40[0];\n    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;\n  }" { (expression_statement "puVar8 = *(undefined8 **)(param_1 + 0x250);" (assignment_expression "puVar8 = *(undefined8 **)(param_1 + 0x250)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 0x250)" * (cast_expression "(undefined8 **)(param_1 + 0x250)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) ;) (if_statement "if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;" if (parenthesized_expression "(puVar8 == *(undefined8 **)(param_1 + 600))" ( (binary_expression "puVar8 == *(undefined8 **)(param_1 + 600)" identifier == (pointer_expression "*(undefined8 **)(param_1 + 600)" * (cast_expression "(undefined8 **)(param_1 + 600)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 600)" ( (binary_expression "param_1 + 600" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0037f938;" goto statement_identifier ;)) (labeled_statement "LAB_0037f2d9:\n    *puVar8 = local_40[0];" statement_identifier : (expression_statement "*puVar8 = local_40[0];" (assignment_expression "*puVar8 = local_40[0]" (pointer_expression "*puVar8" * identifier) = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;)) (expression_statement "*(undefined8 **)(param_1 + 0x250) = puVar8 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 0x250) = puVar8 + 1" (pointer_expression "*(undefined8 **)(param_1 + 0x250)" * (cast_expression "(undefined8 **)(param_1 + 0x250)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }" else (compound_statement "{\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }" { (expression_statement "(**(code **)(*plVar1 + 0x18))(plVar1,puVar8);" (call_expression "(**(code **)(*plVar1 + 0x18))(plVar1,puVar8)" (parenthesized_expression "(**(code **)(*plVar1 + 0x18))" ( (pointer_expression "**(code **)(*plVar1 + 0x18)" * (pointer_expression "*(code **)(*plVar1 + 0x18)" * (cast_expression "(code **)(*plVar1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0x18)" ( (binary_expression "*plVar1 + 0x18" (pointer_expression "*plVar1" * identifier) + number_literal) ))))) )) (argument_list "(plVar1,puVar8)" ( identifier , identifier ))) ;) (expression_statement "puVar8 = *(undefined8 **)(param_1 + 0x250);" (assignment_expression "puVar8 = *(undefined8 **)(param_1 + 0x250)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 0x250)" * (cast_expression "(undefined8 **)(param_1 + 0x250)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) ;) (if_statement "if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;" if (parenthesized_expression "(puVar8 != *(undefined8 **)(param_1 + 600))" ( (binary_expression "puVar8 != *(undefined8 **)(param_1 + 600)" identifier != (pointer_expression "*(undefined8 **)(param_1 + 600)" * (cast_expression "(undefined8 **)(param_1 + 600)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 600)" ( (binary_expression "param_1 + 600" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0037f2d9;" goto statement_identifier ;)) (labeled_statement "LAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);" statement_identifier : (expression_statement "FUN_00387bd0(param_1 + 0x248,puVar8,local_40);" (call_expression "FUN_00387bd0(param_1 + 0x248,puVar8,local_40)" identifier (argument_list "(param_1 + 0x248,puVar8,local_40)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) , identifier , identifier ))) ;)) }))) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) (expression_statement "lVar10 = *(long *)(param_1 + 8);" (assignment_expression "lVar10 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10);" (assignment_expression "lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10)" identifier = (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(lVar10 + 0x148) == '\0') {\n    if (lVar9 == 0) {\nLAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar15 = false;\n    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';\n    if (!bVar18) goto LAB_0037f347;\n    lVar11 = 0xc;\n    pbVar12 = param_2;\n    pbVar13 = (byte *)".init_array";\n    do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar18) == bVar15;\n    if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';\n    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }" if (parenthesized_expression "(*(char *)(lVar10 + 0x148) == '\0')" ( (binary_expression "*(char *)(lVar10 + 0x148) == '\0'" (pointer_expression "*(char *)(lVar10 + 0x148)" * (cast_expression "(char *)(lVar10 + 0x148)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x148)" ( (binary_expression "lVar10 + 0x148" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (lVar9 == 0) {\nLAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar15 = false;\n    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';\n    if (!bVar18) goto LAB_0037f347;\n    lVar11 = 0xc;\n    pbVar12 = param_2;\n    pbVar13 = (byte *)".init_array";\n    do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar18) == bVar15;\n    if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';\n    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }\n  }" { (if_statement "if (lVar9 == 0) {\nLAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }" { (labeled_statement "LAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");" statement_identifier : (expression_statement "FUN_00352af0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;)) })) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar18 = *(char *)(lVar9 + 0x5051) == '\0';" (assignment_expression "bVar18 = *(char *)(lVar9 + 0x5051) == '\0'" identifier = (binary_expression "*(char *)(lVar9 + 0x5051) == '\0'" (pointer_expression "*(char *)(lVar9 + 0x5051)" * (cast_expression "(char *)(lVar9 + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x5051)" ( (binary_expression "lVar9 + 0x5051" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (!bVar18) goto LAB_0037f347;" if (parenthesized_expression "(!bVar18)" ( (unary_expression "!bVar18" ! identifier) )) (goto_statement "goto LAB_0037f347;" goto statement_identifier ;)) (expression_statement "lVar11 = 0xc;" (assignment_expression "lVar11 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".init_array";" (assignment_expression "pbVar13 = (byte *)".init_array"" identifier = (cast_expression "(byte *)".init_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".init_array"" " string_content "))) ;) (do_statement "do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);" do (compound_statement "{\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    }" { (if_statement "if (lVar11 == 0) break;" if (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }" { (labeled_statement "LAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;" statement_identifier : (expression_statement "*(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;" (assignment_expression "*(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4" (pointer_expression "*(byte *)((long)local_40[0] + 0xc9)" * (cast_expression "(byte *)((long)local_40[0] + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40[0] + 0xc9)" ( (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) + number_literal) )))) = (binary_expression "*(byte *)((long)local_40[0] + 0xc9) | 4" (pointer_expression "*(byte *)((long)local_40[0] + 0xc9)" * (cast_expression "(byte *)((long)local_40[0] + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40[0] + 0xc9)" ( (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) + number_literal) )))) | number_literal)) ;)) }) (else_clause "else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }" else (compound_statement "{\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }" { (expression_statement "lVar11 = 0xc;" (assignment_expression "lVar11 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".fini_array";" (assignment_expression "pbVar13 = (byte *)".fini_array"" identifier = (cast_expression "(byte *)".fini_array"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".fini_array"" " string_content "))) ;) (do_statement "do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);" do (compound_statement "{\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" { (if_statement "if (lVar11 == 0) break;" if (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;" if (parenthesized_expression "((!bVar16 && !bVar15) == bVar16)" ( (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_0037f340;" goto statement_identifier ;)) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar18 = *(char *)(lVar9 + 0x1179) == '\0';" (assignment_expression "bVar18 = *(char *)(lVar9 + 0x1179) == '\0'" identifier = (binary_expression "*(char *)(lVar9 + 0x1179) == '\0'" (pointer_expression "*(char *)(lVar9 + 0x1179)" * (cast_expression "(char *)(lVar9 + 0x1179)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x1179)" ( (binary_expression "lVar9 + 0x1179" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }" { (expression_statement "lVar11 = 7;" (assignment_expression "lVar11 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".ctors";" (assignment_expression "pbVar13 = (byte *)".ctors"" identifier = (cast_expression "(byte *)".ctors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors"" " string_content "))) ;) (do_statement "do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);" do (compound_statement "{\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" { (if_statement "if (lVar11 == 0) break;" if (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }" { (expression_statement "lVar11 = 7;" (assignment_expression "lVar11 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".dtors";" (assignment_expression "pbVar13 = (byte *)".dtors"" identifier = (cast_expression "(byte *)".dtors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors"" " string_content "))) ;) (do_statement "do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);" do (compound_statement "{\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          }" { (if_statement "if (lVar11 == 0) break;" if (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;" if (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" ( (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_0037f347;" goto statement_identifier ;)) })) (goto_statement "goto LAB_0037f340;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';" statement_identifier : (expression_statement "bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';" (assignment_expression "bVar15 = *(char *)(lVar9 + 0x62b9) == '\0'" identifier = (binary_expression "*(char *)(lVar9 + 0x62b9) == '\0'" (pointer_expression "*(char *)(lVar9 + 0x62b9)" * (cast_expression "(char *)(lVar9 + 0x62b9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x62b9)" ( (binary_expression "lVar9 + 0x62b9" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;)) (if_statement "if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }" if (parenthesized_expression "(((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15))" ( (binary_expression "((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)" (parenthesized_expression "((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15))" ( (binary_expression "(!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)" (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) && (parenthesized_expression "(bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)" ( (comma_expression "bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15" (assignment_expression "bVar15 = *(char *)(lVar10 + 0x148) == '\0'" identifier = (binary_expression "*(char *)(lVar10 + 0x148) == '\0'" (pointer_expression "*(char *)(lVar10 + 0x148)" * (cast_expression "(char *)(lVar10 + 0x148)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x148)" ( (binary_expression "lVar10 + 0x148" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) , identifier) ))) )) && (parenthesized_expression "(bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)" ( (comma_expression "bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15" (assignment_expression "bVar15 = *(char *)(param_1 + 0x371) == '\0'" identifier = (binary_expression "*(char *)(param_1 + 0x371) == '\0'" (pointer_expression "*(char *)(param_1 + 0x371)" * (cast_expression "(char *)(param_1 + 0x371)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x371)" ( (binary_expression "param_1 + 0x371" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) , identifier) ))) )) (compound_statement "{\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }" { (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar15 = *(char *)(lVar9 + 0x5051) == '\0';" (assignment_expression "bVar15 = *(char *)(lVar9 + 0x5051) == '\0'" identifier = (binary_expression "*(char *)(lVar9 + 0x5051) == '\0'" (pointer_expression "*(char *)(lVar9 + 0x5051)" * (cast_expression "(char *)(lVar9 + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x5051)" ( (binary_expression "lVar9 + 0x5051" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }" { (expression_statement "lVar10 = 6;" (assignment_expression "lVar10 = 6" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".text";" (assignment_expression "pbVar13 = (byte *)".text"" identifier = (cast_expression "(byte *)".text"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".text"" " string_content "))) ;) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar15 = (!bVar18 && !bVar15) == bVar18;" (assignment_expression "bVar15 = (!bVar18 && !bVar15) == bVar18" identifier = (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" ( (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }" { (expression_statement "pbVar12 = (byte *)((long)local_40[0] + 0xc9);" (assignment_expression "pbVar12 = (byte *)((long)local_40[0] + 0xc9)" identifier = (cast_expression "(byte *)((long)local_40[0] + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40[0] + 0xc9)" ( (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "*pbVar12 = *pbVar12 | 4;" (assignment_expression "*pbVar12 = *pbVar12 | 4" (pointer_expression "*pbVar12" * identifier) = (binary_expression "*pbVar12 | 4" (pointer_expression "*pbVar12" * identifier) | number_literal)) ;) (expression_statement "bVar15 = *pbVar12 == 0;" (assignment_expression "bVar15 = *pbVar12 == 0" identifier = (binary_expression "*pbVar12 == 0" (pointer_expression "*pbVar12" * identifier) == number_literal)) ;) })) })) })) }) (else_clause "else {\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }" else (compound_statement "{\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }" { (expression_statement "bVar15 = lVar9 == 0;" (assignment_expression "bVar15 = lVar9 == 0" identifier = (binary_expression "lVar9 == 0" identifier == number_literal)) ;) (if_statement "if (bVar15) goto LAB_0037f97a;" if (parenthesized_expression "(bVar15)" ( identifier )) (goto_statement "goto LAB_0037f97a;" goto statement_identifier ;)) }))) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "lVar10 = 5;" (assignment_expression "lVar10 = 5" identifier = number_literal) ;) (expression_statement "pbVar12 = *(byte **)(lVar9 + 0x5b00);" (assignment_expression "pbVar12 = *(byte **)(lVar9 + 0x5b00)" identifier = (pointer_expression "*(byte **)(lVar9 + 0x5b00)" * (cast_expression "(byte **)(lVar9 + 0x5b00)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar9 + 0x5b00)" ( (binary_expression "lVar9 + 0x5b00" identifier + number_literal) ))))) ;) (expression_statement "pbVar13 = (byte *)0x575186;" (assignment_expression "pbVar13 = (byte *)0x575186" identifier = (cast_expression "(byte *)0x575186" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if (lVar10 == 0) break;\n    lVar10 = lVar10 + -1;\n    bVar18 = *pbVar12 < *pbVar13;\n    bVar15 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n  } while (bVar15);" do (compound_statement "{\n    if (lVar10 == 0) break;\n    lVar10 = lVar10 + -1;\n    bVar18 = *pbVar12 < *pbVar13;\n    bVar15 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n  }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar18 && !bVar15) == bVar18) {\n    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;\n  }" if (parenthesized_expression "((!bVar18 && !bVar15) == bVar18)" ( (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" ( (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (compound_statement "{\n    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;\n  }" { (expression_statement "*(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;" (assignment_expression "*(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8" (pointer_expression "*(byte *)((long)local_40[0] + 0xc9)" * (cast_expression "(byte *)((long)local_40[0] + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40[0] + 0xc9)" ( (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) + number_literal) )))) = (binary_expression "*(byte *)((long)local_40[0] + 0xc9) | 8" (pointer_expression "*(byte *)((long)local_40[0] + 0xc9)" * (cast_expression "(byte *)((long)local_40[0] + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40[0] + 0xc9)" ( (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) + number_literal) )))) | number_literal)) ;) })) (if_statement "if (param_3 == 3) {\n    bVar15 = false;\n    bVar18 = *(char *)(param_1 + 0x370) == '\0';\n    if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(param_3 == 3)" ( (binary_expression "param_3 == 3" identifier == number_literal) )) (compound_statement "{\n    bVar15 = false;\n    bVar18 = *(char *)(param_1 + 0x370) == '\0';\n    if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }\n  }" { (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar18 = *(char *)(param_1 + 0x370) == '\0';" (assignment_expression "bVar18 = *(char *)(param_1 + 0x370) == '\0'" identifier = (binary_expression "*(char *)(param_1 + 0x370) == '\0'" (pointer_expression "*(char *)(param_1 + 0x370)" * (cast_expression "(char *)(param_1 + 0x370)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x370)" ( (binary_expression "param_1 + 0x370" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }" { (expression_statement "lVar10 = 5;" (assignment_expression "lVar10 = 5" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".stab";" (assignment_expression "pbVar13 = (byte *)".stab"" identifier = (cast_expression "(byte *)".stab"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".stab"" " string_content "))) ;) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);" do (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "uVar19 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "uVar19 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }" if (parenthesized_expression "((bool)uVar19)" ( (cast_expression "(bool)uVar19" ( (type_descriptor "bool" primitive_type) ) identifier) )) (compound_statement "{\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }" { (expression_statement "sVar7 = strlen((char *)param_2);" (assignment_expression "sVar7 = strlen((char *)param_2)" identifier = (call_expression "strlen((char *)param_2)" identifier (argument_list "((char *)param_2)" ( (cast_expression "(char *)param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "lVar10 = 4;" (assignment_expression "lVar10 = 4" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2 + (sVar7 - 3);" (assignment_expression "pbVar12 = param_2 + (sVar7 - 3)" identifier = (binary_expression "param_2 + (sVar7 - 3)" identifier + (parenthesized_expression "(sVar7 - 3)" ( (binary_expression "sVar7 - 3" identifier - number_literal) )))) ;) (expression_statement "pbVar13 = (byte *)0x579a2e;" (assignment_expression "pbVar13 = (byte *)0x579a2e" identifier = (cast_expression "(byte *)0x579a2e" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);" do (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar17 = *pbVar12 < *pbVar13;" (assignment_expression "uVar17 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "uVar19 = *pbVar12 == *pbVar13;" (assignment_expression "uVar19 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar19)" ( (cast_expression "(bool)uVar19" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (if_statement "if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }" if (parenthesized_expression "((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17)" ( (binary_expression "(!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17" (parenthesized_expression "(!(bool)uVar17 && !(bool)uVar19)" ( (binary_expression "!(bool)uVar17 && !(bool)uVar19" (unary_expression "!(bool)uVar17" ! (cast_expression "(bool)uVar17" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar19" ! (cast_expression "(bool)uVar19" ( (type_descriptor "bool" primitive_type) ) identifier))) )) == (cast_expression "(bool)uVar17" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (compound_statement "{\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }" { (expression_statement "*(undefined1 *)(param_1 + 0x370) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x370) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x370)" * (cast_expression "(undefined1 *)(param_1 + 0x370)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x370)" ( (binary_expression "param_1 + 0x370" identifier + number_literal) )))) = number_literal) ;) })) })) })) }) (else_clause "else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }" else (if_statement "if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "((param_3 == 1) || (param_3 == 8))" ( (binary_expression "(param_3 == 1) || (param_3 == 8)" (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) || (parenthesized_expression "(param_3 == 8)" ( (binary_expression "param_3 == 8" identifier == number_literal) ))) )) (compound_statement "{\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }" { (expression_statement "bVar15 = uVar3 < 0x15;" (assignment_expression "bVar15 = uVar3 < 0x15" identifier = (binary_expression "uVar3 < 0x15" identifier < number_literal)) ;) (expression_statement "bVar18 = uVar3 == 0x15;" (assignment_expression "bVar18 = uVar3 == 0x15" identifier = (binary_expression "uVar3 == 0x15" identifier == number_literal)) ;) (if_statement "if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15))" ( (binary_expression "(0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)" (parenthesized_expression "(0x15 < uVar3)" ( (binary_expression "0x15 < uVar3" number_literal < identifier) )) || (parenthesized_expression "(bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)" ( (comma_expression "bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15" (assignment_expression "bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0" identifier = (binary_expression "(0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0" (parenthesized_expression "(0x3020c2UL >> (uVar14 & 0x3f) & 1)" ( (binary_expression "0x3020c2UL >> (uVar14 & 0x3f) & 1" (binary_expression "0x3020c2UL >> (uVar14 & 0x3f)" number_literal >> (parenthesized_expression "(uVar14 & 0x3f)" ( (binary_expression "uVar14 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal)) , (unary_expression "!bVar15" ! identifier)) ))) )) (compound_statement "{\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }" { (expression_statement "lVar10 = 10;" (assignment_expression "lVar10 = 10" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".eh_frame";" (assignment_expression "pbVar13 = (byte *)".eh_frame"" identifier = (cast_expression "(byte *)".eh_frame"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".eh_frame"" " string_content "))) ;) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);" do (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }" { (expression_statement "lVar10 = 7;" (assignment_expression "lVar10 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".ctors";" (assignment_expression "pbVar13 = (byte *)".ctors"" identifier = (cast_expression "(byte *)".ctors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors"" " string_content "))) ;) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);" do (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar16 && !bVar15) == bVar16;" (assignment_expression "bVar15 = (!bVar16 && !bVar15) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }" { (expression_statement "lVar10 = 7;" (assignment_expression "lVar10 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".dtors";" (assignment_expression "pbVar13 = (byte *)".dtors"" identifier = (cast_expression "(byte *)".dtors"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors"" " string_content "))) ;) (do_statement "do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);" do (compound_statement "{\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar18 && !bVar15) == bVar18;" (assignment_expression "bVar15 = (!bVar18 && !bVar15) == bVar18" identifier = (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" ( (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }" { (expression_statement "lVar10 = 5;" (assignment_expression "lVar10 = 5" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = &DAT_005710ea;" (assignment_expression "pbVar13 = &DAT_005710ea" identifier = (pointer_expression "&DAT_005710ea" & identifier)) ;) (do_statement "do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);" do (compound_statement "{\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }" if (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" ( (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) != identifier) )) (compound_statement "{\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }" { (expression_statement "pbVar12 = (byte *)((long)local_40[0] + 0xca);" (assignment_expression "pbVar12 = (byte *)((long)local_40[0] + 0xca)" identifier = (cast_expression "(byte *)((long)local_40[0] + 0xca)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_40[0] + 0xca)" ( (binary_expression "(long)local_40[0] + 0xca" (cast_expression "(long)local_40[0]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "local_40[0]" identifier [ number_literal ])) + number_literal) )))) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "*pbVar12 = *pbVar12 | 0x40;" (assignment_expression "*pbVar12 = *pbVar12 | 0x40" (pointer_expression "*pbVar12" * identifier) = (binary_expression "*pbVar12 | 0x40" (pointer_expression "*pbVar12" * identifier) | number_literal)) ;) (expression_statement "bVar18 = *pbVar12 == 0;" (assignment_expression "bVar18 = *pbVar12 == 0" identifier = (binary_expression "*pbVar12 == 0" (pointer_expression "*pbVar12" * identifier) == number_literal)) ;) (expression_statement "lVar10 = 0xc;" (assignment_expression "lVar10 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".debug_info";" (assignment_expression "pbVar13 = (byte *)".debug_info"" identifier = (cast_expression "(byte *)".debug_info"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_info"" " string_content "))) ;) (do_statement "do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);" do (compound_statement "{\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" ( (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }" { (expression_statement "puVar5 = (undefined8 *)FUN_0049cb70(0x10);" (assignment_expression "puVar5 = (undefined8 *)FUN_0049cb70(0x10)" identifier = (cast_expression "(undefined8 *)FUN_0049cb70(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb70(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*puVar5 = &DAT_00672c10;" (assignment_expression "*puVar5 = &DAT_00672c10" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&DAT_00672c10" & identifier)) ;) (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }" if (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }" { (expression_statement "FUN_00352af0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);" (assignment_expression "uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" identifier = (pointer_expression "*(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" * (cast_expression "(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" ( (binary_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((long)puVar5 + 9) = 0;" (assignment_expression "*(undefined1 *)((long)puVar5 + 9) = 0" (pointer_expression "*(undefined1 *)((long)puVar5 + 9)" * (cast_expression "(undefined1 *)((long)puVar5 + 9)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 9)" ( (binary_expression "(long)puVar5 + 9" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar5 + 1) = uVar17;" (assignment_expression "*(undefined1 *)(puVar5 + 1) = uVar17" (pointer_expression "*(undefined1 *)(puVar5 + 1)" * (cast_expression "(undefined1 *)(puVar5 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar5 = &PTR_FUN_00657840;" (assignment_expression "*puVar5 = &PTR_FUN_00657840" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&PTR_FUN_00657840" & identifier)) ;) }) (else_clause "else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }" else (compound_statement "{\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }" { (expression_statement "lVar10 = 0xd;" (assignment_expression "lVar10 = 0xd" identifier = number_literal) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar13 = (byte *)".debug_types";" (assignment_expression "pbVar13 = (byte *)".debug_types"" identifier = (cast_expression "(byte *)".debug_types"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_types"" " string_content "))) ;) (do_statement "do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);" do (compound_statement "{\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar16 && !bVar15) == bVar16;" (assignment_expression "bVar15 = (!bVar16 && !bVar15) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }" { (expression_statement "lVar10 = 0xc;" (assignment_expression "lVar10 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".debug_line";" (assignment_expression "pbVar12 = (byte *)".debug_line"" identifier = (cast_expression "(byte *)".debug_line"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_line"" " string_content "))) ;) (do_statement "do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);" do (compound_statement "{\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *param_2 < *pbVar12;" (assignment_expression "bVar18 = *param_2 < *pbVar12" identifier = (binary_expression "*param_2 < *pbVar12" (pointer_expression "*param_2" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar15 = *param_2 == *pbVar12;" (assignment_expression "bVar15 = *param_2 == *pbVar12" identifier = (binary_expression "*param_2 == *pbVar12" (pointer_expression "*param_2" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "param_2 = param_2 + (ulong)bVar20 * -2 + 1;" (assignment_expression "param_2 = param_2 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "param_2 + (ulong)bVar20 * -2 + 1" (binary_expression "param_2 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (if_statement "if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }" if (parenthesized_expression "((!bVar18 && !bVar15) == bVar18)" ( (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" ( (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )) (compound_statement "{\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }" { (expression_statement "puVar5 = (undefined8 *)FUN_0049cb70(0x10);" (assignment_expression "puVar5 = (undefined8 *)FUN_0049cb70(0x10)" identifier = (cast_expression "(undefined8 *)FUN_0049cb70(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb70(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*puVar5 = &DAT_00672c10;" (assignment_expression "*puVar5 = &DAT_00672c10" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&DAT_00672c10" & identifier)) ;) (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }" if (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }" { (expression_statement "FUN_00352af0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "*(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);" (assignment_expression "*(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" (pointer_expression "*(undefined1 *)(puVar5 + 1)" * (cast_expression "(undefined1 *)(puVar5 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" * (cast_expression "(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" ( (binary_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*puVar5 = &PTR_FUN_00657870;" (assignment_expression "*puVar5 = &PTR_FUN_00657870" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&PTR_FUN_00657870" & identifier)) ;) (expression_statement "puVar8[0x26] = puVar5;" (assignment_expression "puVar8[0x26] = puVar5" (subscript_expression "puVar8[0x26]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar6 = FUN_003c8700(puVar5);" (assignment_expression "uVar6 = FUN_003c8700(puVar5)" identifier = (call_expression "FUN_003c8700(puVar5)" identifier (argument_list "(puVar5)" ( identifier )))) ;) (expression_statement "puVar8[0x25] = uVar6;" (assignment_expression "puVar8[0x25] = uVar6" (subscript_expression "puVar8[0x25]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) })) (goto_statement "goto LAB_0037f3c1;" goto statement_identifier ;) })) (expression_statement "puVar5 = (undefined8 *)FUN_0049cb70(0x10);" (assignment_expression "puVar5 = (undefined8 *)FUN_0049cb70(0x10)" identifier = (cast_expression "(undefined8 *)FUN_0049cb70(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0049cb70(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*puVar5 = &DAT_00672c10;" (assignment_expression "*puVar5 = &DAT_00672c10" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&DAT_00672c10" & identifier)) ;) (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }" if (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }" { (expression_statement "FUN_00352af0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);" (assignment_expression "uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" identifier = (pointer_expression "*(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" * (cast_expression "(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" ( (binary_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((long)puVar5 + 9) = 1;" (assignment_expression "*(undefined1 *)((long)puVar5 + 9) = 1" (pointer_expression "*(undefined1 *)((long)puVar5 + 9)" * (cast_expression "(undefined1 *)((long)puVar5 + 9)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 9)" ( (binary_expression "(long)puVar5 + 9" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar5 + 1) = uVar17;" (assignment_expression "*(undefined1 *)(puVar5 + 1) = uVar17" (pointer_expression "*(undefined1 *)(puVar5 + 1)" * (cast_expression "(undefined1 *)(puVar5 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar5 = &PTR_FUN_00657840;" (assignment_expression "*puVar5 = &PTR_FUN_00657840" (pointer_expression "*puVar5" * identifier) = (pointer_expression "&PTR_FUN_00657840" & identifier)) ;) }))) (expression_statement "puVar8[0x26] = puVar5;" (assignment_expression "puVar8[0x26] = puVar5" (subscript_expression "puVar8[0x26]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar6 = FUN_003c86f0(puVar5);" (assignment_expression "uVar6 = FUN_003c86f0(puVar5)" identifier = (call_expression "FUN_003c86f0(puVar5)" identifier (argument_list "(puVar5)" ( identifier )))) ;) (expression_statement "puVar8[0x25] = uVar6;" (assignment_expression "puVar8[0x25] = uVar6" (subscript_expression "puVar8[0x25]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) })) })) })) })) })) })))) (labeled_statement "LAB_0037f3c1:\n  if (*(char *)(param_1 + 0x369) != '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }" statement_identifier : (if_statement "if (*(char *)(param_1 + 0x369) != '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x369) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x369) != '\0'" (pointer_expression "*(char *)(param_1 + 0x369)" * (cast_expression "(char *)(param_1 + 0x369)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x369)" ( (binary_expression "param_1 + 0x369" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }" { (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }" if (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" ( (binary_expression "PTR_DAT_0067cb08 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }" { (labeled_statement "LAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");" statement_identifier : (expression_statement "FUN_00352af0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;)) })) (expression_statement "FUN_0037f0b0(param_1);" (call_expression "FUN_0037f0b0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) }))) (return_statement "return puVar8;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) 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 (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence '))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_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 *)) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_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 *)) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) }))) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (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 (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (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 (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (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 = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (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 (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == 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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (string_literal " string_content ") )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;)) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) | LIT)) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_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 (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (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) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;)) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence '))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (subscript_expression IDENT [ LIT ])) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (subscript_expression IDENT [ LIT ])) + LIT) )))) | LIT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence '))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (goto_statement goto statement_identifier ;)) })) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence '))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (unary_expression ! IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence '))) , IDENT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence '))) , IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence '))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (subscript_expression IDENT [ LIT ])) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == LIT)) ;) })) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (subscript_expression IDENT [ LIT ])) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (subscript_expression IDENT [ LIT ])) + LIT) )))) | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence '))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE) ) IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE) ) IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT)) && (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) == (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) })) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression LIT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT)) , (unary_expression ! IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (subscript_expression IDENT [ LIT ])) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_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 (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_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 IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined8 *\nFUN_0037f160(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)\n\n{\n  long *plVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  size_t sVar7;\n  undefined8 *puVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  ulong uVar14;\n  bool bVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  undefined1 uVar19;\n  byte bVar20;\n  char local_59;\n  undefined8 *local_40 [2];\n  \n  bVar20 = 0;\n  uVar14 = param_5 & 0xffffffff;\n  if ((param_4 & 2) != 0) goto LAB_0037f230;\n  lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  bVar15 = false;\n  bVar18 = lVar10 == 0;\n  if (bVar18) goto LAB_0037f97a;\n  lVar9 = 5;\n  pbVar12 = *(byte **)(lVar10 + 0xf80);\n  pbVar13 = (byte *)0x57596e;\n  do {\n    if (lVar9 == 0) break;\n    lVar9 = lVar9 + -1;\n    bVar15 = *pbVar12 < *pbVar13;\n    bVar18 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + 1;\n    pbVar13 = pbVar13 + 1;\n  } while (bVar18);\n  bVar16 = false;\n  bVar15 = (!bVar15 && !bVar18) == bVar15;\n  if (bVar15) {\nLAB_0037f1e5:\n    bVar15 = false;\n    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';\n    if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }\n  }\n  else {\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    \n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }\n  puVar8 = local_40[0];\n  if (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;\n    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);\n    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;\n    if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }\n    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;\n  }\n  else {\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }\n  if (((int)param_5 == 0) && ((param_4 & 2) != 0)) {\n    uVar3 = FUN_0037b280(param_1,puVar8,local_59);\n    uVar14 = (ulong)uVar3;\n    puVar8 = local_40[0];\n  }\n  puVar2 = PTR_DAT_0067cb08;\n  uVar3 = (uint)uVar14;\n  *(uint *)(puVar8 + 0xf) = uVar3;\n  plVar1 = *(long **)(puVar2 + 0x18);\n  if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n  if (*(code **)(*plVar1 + 0x18) == FUN_001a49c0) {\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;\nLAB_0037f2d9:\n    *puVar8 = local_40[0];\n    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;\n  }\n  else {\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }\n  puVar8 = local_40[0];\n  lVar10 = *(long *)(param_1 + 8);\n  lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  if (*(char *)(lVar10 + 0x148) == '\0') {\n    if (lVar9 == 0) {\nLAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar15 = false;\n    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';\n    if (!bVar18) goto LAB_0037f347;\n    lVar11 = 0xc;\n    pbVar12 = param_2;\n    pbVar13 = (byte *)".init_array";\n    do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar18) == bVar15;\n    if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';\n    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }\n  bVar18 = false;\n  lVar10 = 5;\n  pbVar12 = *(byte **)(lVar9 + 0x5b00);\n  pbVar13 = (byte *)0x575186;\n  do {\n    if (lVar10 == 0) break;\n    lVar10 = lVar10 + -1;\n    bVar18 = *pbVar12 < *pbVar13;\n    bVar15 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n  } while (bVar15);\n  if ((!bVar18 && !bVar15) == bVar18) {\n    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;\n  }\n  if (param_3 == 3) {\n    bVar15 = false;\n    bVar18 = *(char *)(param_1 + 0x370) == '\0';\n    if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0037f3c1:\n  if (*(char *)(param_1 + 0x369) != '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }\n  return puVar8;\n}" (type_identifier "undefined8") (pointer_declarator "*\nFUN_0037f160(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)" (* "*") (function_declarator "FUN_0037f160(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)" (identifier "FUN_0037f160") (parameter_list "(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "ulong param_4" (type_identifier "ulong") (identifier "param_4")) (, ",") (parameter_declaration "ulong param_5" (type_identifier "ulong") (identifier "param_5")) (, ",") (parameter_declaration "char param_6" (primitive_type "char") (identifier "param_6")) () ")")))) (compound_statement "{\n  long *plVar1;\n  undefined *puVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  size_t sVar7;\n  undefined8 *puVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  ulong uVar14;\n  bool bVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  undefined1 uVar19;\n  byte bVar20;\n  char local_59;\n  undefined8 *local_40 [2];\n  \n  bVar20 = 0;\n  uVar14 = param_5 & 0xffffffff;\n  if ((param_4 & 2) != 0) goto LAB_0037f230;\n  lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  bVar15 = false;\n  bVar18 = lVar10 == 0;\n  if (bVar18) goto LAB_0037f97a;\n  lVar9 = 5;\n  pbVar12 = *(byte **)(lVar10 + 0xf80);\n  pbVar13 = (byte *)0x57596e;\n  do {\n    if (lVar9 == 0) break;\n    lVar9 = lVar9 + -1;\n    bVar15 = *pbVar12 < *pbVar13;\n    bVar18 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + 1;\n    pbVar13 = pbVar13 + 1;\n  } while (bVar18);\n  bVar16 = false;\n  bVar15 = (!bVar15 && !bVar18) == bVar15;\n  if (bVar15) {\nLAB_0037f1e5:\n    bVar15 = false;\n    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';\n    if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }\n  }\n  else {\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    \n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }\n  puVar8 = local_40[0];\n  if (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;\n    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);\n    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;\n    if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }\n    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;\n  }\n  else {\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }\n  if (((int)param_5 == 0) && ((param_4 & 2) != 0)) {\n    uVar3 = FUN_0037b280(param_1,puVar8,local_59);\n    uVar14 = (ulong)uVar3;\n    puVar8 = local_40[0];\n  }\n  puVar2 = PTR_DAT_0067cb08;\n  uVar3 = (uint)uVar14;\n  *(uint *)(puVar8 + 0xf) = uVar3;\n  plVar1 = *(long **)(puVar2 + 0x18);\n  if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n  if (*(code **)(*plVar1 + 0x18) == FUN_001a49c0) {\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;\nLAB_0037f2d9:\n    *puVar8 = local_40[0];\n    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;\n  }\n  else {\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }\n  puVar8 = local_40[0];\n  lVar10 = *(long *)(param_1 + 8);\n  lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10);\n  if (*(char *)(lVar10 + 0x148) == '\0') {\n    if (lVar9 == 0) {\nLAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar15 = false;\n    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';\n    if (!bVar18) goto LAB_0037f347;\n    lVar11 = 0xc;\n    pbVar12 = param_2;\n    pbVar13 = (byte *)".init_array";\n    do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar18) == bVar15;\n    if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';\n    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }\n  bVar18 = false;\n  lVar10 = 5;\n  pbVar12 = *(byte **)(lVar9 + 0x5b00);\n  pbVar13 = (byte *)0x575186;\n  do {\n    if (lVar10 == 0) break;\n    lVar10 = lVar10 + -1;\n    bVar18 = *pbVar12 < *pbVar13;\n    bVar15 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n  } while (bVar15);\n  if ((!bVar18 && !bVar15) == bVar18) {\n    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;\n  }\n  if (param_3 == 3) {\n    bVar15 = false;\n    bVar18 = *(char *)(param_1 + 0x370) == '\0';\n    if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0037f3c1:\n  if (*(char *)(param_1 + 0x369) != '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }\n  return puVar8;\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "size_t sVar7;" (primitive_type "size_t") (identifier "sVar7") (; ";")) (declaration "undefined8 *puVar8;" (type_identifier "undefined8") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "long lVar11;" (sized_type_specifier "long" (long "long")) (identifier "lVar11") (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "ulong uVar14;" (type_identifier "ulong") (identifier "uVar14") (; ";")) (declaration "bool bVar15;" (primitive_type "bool") (identifier "bVar15") (; ";")) (declaration "bool bVar16;" (primitive_type "bool") (identifier "bVar16") (; ";")) (declaration "undefined1 uVar17;" (type_identifier "undefined1") (identifier "uVar17") (; ";")) (declaration "bool bVar18;" (primitive_type "bool") (identifier "bVar18") (; ";")) (declaration "undefined1 uVar19;" (type_identifier "undefined1") (identifier "uVar19") (; ";")) (declaration "byte bVar20;" (type_identifier "byte") (identifier "bVar20") (; ";")) (declaration "char local_59;" (primitive_type "char") (identifier "local_59") (; ";")) (declaration "undefined8 *local_40 [2];" (type_identifier "undefined8") (pointer_declarator "*local_40 [2]" (* "*") (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" (identifier "bVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar14 = param_5 & 0xffffffff;" (assignment_expression "uVar14 = param_5 & 0xffffffff" (identifier "uVar14") (= "=") (binary_expression "param_5 & 0xffffffff" (identifier "param_5") (& "&") (number_literal "0xffffffff"))) (; ";")) (if_statement "if ((param_4 & 2) != 0) goto LAB_0037f230;" (if "if") (parenthesized_expression "((param_4 & 2) != 0)" (( "(") (binary_expression "(param_4 & 2) != 0" (parenthesized_expression "(param_4 & 2)" (( "(") (binary_expression "param_4 & 2" (identifier "param_4") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0037f230;" (goto "goto") (statement_identifier "LAB_0037f230") (; ";"))) (expression_statement "lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10);" (assignment_expression "lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10)" (identifier "lVar10") (= "=") (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x10" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (expression_statement "bVar18 = lVar10 == 0;" (assignment_expression "bVar18 = lVar10 == 0" (identifier "bVar18") (= "=") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar18) goto LAB_0037f97a;" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (goto_statement "goto LAB_0037f97a;" (goto "goto") (statement_identifier "LAB_0037f97a") (; ";"))) (expression_statement "lVar9 = 5;" (assignment_expression "lVar9 = 5" (identifier "lVar9") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar12 = *(byte **)(lVar10 + 0xf80);" (assignment_expression "pbVar12 = *(byte **)(lVar10 + 0xf80)" (identifier "pbVar12") (= "=") (pointer_expression "*(byte **)(lVar10 + 0xf80)" (* "*") (cast_expression "(byte **)(lVar10 + 0xf80)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar10 + 0xf80)" (( "(") (binary_expression "lVar10 + 0xf80" (identifier "lVar10") (+ "+") (number_literal "0xf80")) () ")"))))) (; ";")) (expression_statement "pbVar13 = (byte *)0x57596e;" (assignment_expression "pbVar13 = (byte *)0x57596e" (identifier "pbVar13") (= "=") (cast_expression "(byte *)0x57596e" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x57596e"))) (; ";")) (do_statement "do {\n    if (lVar9 == 0) break;\n    lVar9 = lVar9 + -1;\n    bVar15 = *pbVar12 < *pbVar13;\n    bVar18 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + 1;\n    pbVar13 = pbVar13 + 1;\n  } while (bVar18);" (do "do") (compound_statement "{\n    if (lVar9 == 0) break;\n    lVar9 = lVar9 + -1;\n    bVar15 = *pbVar12 < *pbVar13;\n    bVar18 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + 1;\n    pbVar13 = pbVar13 + 1;\n  }" ({ "{") (if_statement "if (lVar9 == 0) break;" (if "if") (parenthesized_expression "(lVar9 == 0)" (( "(") (binary_expression "lVar9 == 0" (identifier "lVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" (identifier "lVar9") (= "=") (binary_expression "lVar9 + -1" (identifier "lVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + 1" (identifier "pbVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" (identifier "bVar15") (= "=") (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" (( "(") (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar15"))) (; ";")) (if_statement "if (bVar15) {\nLAB_0037f1e5:\n    bVar15 = false;\n    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';\n    if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }\n  }\n  else {\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    \n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\nLAB_0037f1e5:\n    bVar15 = false;\n    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';\n    if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }\n  }" ({ "{") (labeled_statement "LAB_0037f1e5:\n    bVar15 = false;" (statement_identifier "LAB_0037f1e5") (: ":") (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";"))) (expression_statement "bVar18 = *(char *)(lVar10 + 0x5689) == '\0';" (assignment_expression "bVar18 = *(char *)(lVar10 + 0x5689) == '\0'" (identifier "bVar18") (= "=") (binary_expression "*(char *)(lVar10 + 0x5689) == '\0'" (pointer_expression "*(char *)(lVar10 + 0x5689)" (* "*") (cast_expression "(char *)(lVar10 + 0x5689)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x5689)" (( "(") (binary_expression "lVar10 + 0x5689" (identifier "lVar10") (+ "+") (number_literal "0x5689")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (if_statement "if (bVar18) {\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }\n    else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (compound_statement "{\nLAB_0037f230:\n      bVar15 = param_3 == 0;\n      bVar18 = param_3 == 1;\n      if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }\n      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);\n      if (plVar1 == (long *)0x0) goto LAB_0037fb03;\n      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);\n    }" ({ "{") (labeled_statement "LAB_0037f230:\n      bVar15 = param_3 == 0;" (statement_identifier "LAB_0037f230") (: ":") (expression_statement "bVar15 = param_3 == 0;" (assignment_expression "bVar15 = param_3 == 0" (identifier "bVar15") (= "=") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0"))) (; ";"))) (expression_statement "bVar18 = param_3 == 1;" (assignment_expression "bVar18 = param_3 == 1" (identifier "bVar18") (= "=") (binary_expression "param_3 == 1" (identifier "param_3") (== "==") (number_literal "1"))) (; ";")) (if_statement "if (bVar18) {\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (compound_statement "{\n        lVar10 = 0xb;\n        pbVar12 = (byte *)".init_array";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "lVar10 = 0xb;" (assignment_expression "lVar10 = 0xb" (identifier "lVar10") (= "=") (number_literal "0xb")) (; ";")) (expression_statement "pbVar12 = (byte *)".init_array";" (assignment_expression "pbVar12 = (byte *)".init_array"" (identifier "pbVar12") (= "=") (cast_expression "(byte *)".init_array"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".init_array"" (" """) (string_content ".init_array") (" """)))) (; ";")) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" (identifier "pbVar13") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar18);" (do "do") (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + 1" (identifier "pbVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" (identifier "bVar15") (= "=") (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" (( "(") (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar15"))) (; ";")) (if_statement "if (bVar15) {\n          param_3 = 0xe;\n        }\n        else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\n          param_3 = 0xe;\n        }" ({ "{") (expression_statement "param_3 = 0xe;" (assignment_expression "param_3 = 0xe" (identifier "param_3") (= "=") (number_literal "0xe")) (; ";")) (} "}")) (else_clause "else {\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }" (else "else") (compound_statement "{\n          lVar10 = 0xe;\n          pbVar12 = (byte *)".preinit_array";\n          pbVar13 = param_2;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);\n          bVar18 = false;\n          bVar15 = (!bVar16 && !bVar15) == bVar16;\n          if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }\n        }" ({ "{") (expression_statement "lVar10 = 0xe;" (assignment_expression "lVar10 = 0xe" (identifier "lVar10") (= "=") (number_literal "0xe")) (; ";")) (expression_statement "pbVar12 = (byte *)".preinit_array";" (assignment_expression "pbVar12 = (byte *)".preinit_array"" (identifier "pbVar12") (= "=") (cast_expression "(byte *)".preinit_array"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".preinit_array"" (" """) (string_content ".preinit_array") (" """)))) (; ";")) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" (identifier "pbVar13") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          } while (bVar15);" (do "do") (compound_statement "{\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + 1;\n            pbVar13 = pbVar13 + 1;\n          }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" (identifier "bVar16") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + 1" (identifier "pbVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" (identifier "bVar18") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (!bVar16 && !bVar15) == bVar16;" (assignment_expression "bVar15 = (!bVar16 && !bVar15) == bVar16" (identifier "bVar15") (= "=") (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" (( "(") (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar16"))) (; ";")) (if_statement "if (bVar15) {\n            param_3 = 0x10;\n          }\n          else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\n            param_3 = 0x10;\n          }" ({ "{") (expression_statement "param_3 = 0x10;" (assignment_expression "param_3 = 0x10" (identifier "param_3") (= "=") (number_literal "0x10")) (; ";")) (} "}")) (else_clause "else {\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }" (else "else") (compound_statement "{\n            lVar10 = 0xb;\n            pbVar12 = (byte *)".fini_array";\n            pbVar13 = param_2;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);\n            if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }\n          }" ({ "{") (expression_statement "lVar10 = 0xb;" (assignment_expression "lVar10 = 0xb" (identifier "lVar10") (= "=") (number_literal "0xb")) (; ";")) (expression_statement "pbVar12 = (byte *)".fini_array";" (assignment_expression "pbVar12 = (byte *)".fini_array"" (identifier "pbVar12") (= "=") (cast_expression "(byte *)".fini_array"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".fini_array"" (" """) (string_content ".fini_array") (" """)))) (; ";")) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" (identifier "pbVar13") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            } while (bVar15);" (do "do") (compound_statement "{\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar18 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + 1;\n              pbVar13 = pbVar13 + 1;\n            }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + 1" (identifier "pbVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (if_statement "if ((!bVar18 && !bVar15) == bVar18) {\n              param_3 = 0xf;\n            }" (if "if") (parenthesized_expression "((!bVar18 && !bVar15) == bVar18)" (( "(") (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" (( "(") (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" (! "!") (identifier "bVar18")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar18")) () ")")) (compound_statement "{\n              param_3 = 0xf;\n            }" ({ "{") (expression_statement "param_3 = 0xf;" (assignment_expression "param_3 = 0xf" (identifier "param_3") (= "=") (number_literal "0xf")) (; ";")) (} "}"))) (} "}")))) (} "}")))) (} "}"))) (expression_statement "plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);" (assignment_expression "plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18)" (identifier "plVar1") (= "=") (pointer_expression "*(long **)(PTR_DAT_0067cb08 + 0x18)" (* "*") (cast_expression "(long **)(PTR_DAT_0067cb08 + 0x18)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x18" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (plVar1 == (long *)0x0) goto LAB_0037fb03;" (if "if") (parenthesized_expression "(plVar1 == (long *)0x0)" (( "(") (binary_expression "plVar1 == (long *)0x0" (identifier "plVar1") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0037fb03;" (goto "goto") (statement_identifier "LAB_0037fb03") (; ";"))) (expression_statement "local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);" (assignment_expression "local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4)" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4)" (parenthesized_expression "(**(code **)(*plVar1 + 0xd8))" (( "(") (pointer_expression "**(code **)(*plVar1 + 0xd8)" (* "*") (pointer_expression "*(code **)(*plVar1 + 0xd8)" (* "*") (cast_expression "(code **)(*plVar1 + 0xd8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar1 + 0xd8)" (( "(") (binary_expression "*plVar1 + 0xd8" (pointer_expression "*plVar1" (* "*") (identifier "plVar1")) (+ "+") (number_literal "0xd8")) () ")"))))) () ")")) (argument_list "(plVar1,param_2,param_3,param_4)" (( "(") (identifier "plVar1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }" (else "else") (compound_statement "{\n      lVar10 = 0xe;\n      pbVar12 = (byte *)".debug_abbrev";\n      pbVar13 = param_2;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }\n    }" ({ "{") (expression_statement "lVar10 = 0xe;" (assignment_expression "lVar10 = 0xe" (identifier "lVar10") (= "=") (number_literal "0xe")) (; ";")) (expression_statement "pbVar12 = (byte *)".debug_abbrev";" (assignment_expression "pbVar12 = (byte *)".debug_abbrev"" (identifier "pbVar12") (= "=") (cast_expression "(byte *)".debug_abbrev"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".debug_abbrev"" (" """) (string_content ".debug_abbrev") (" """)))) (; ";")) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" (identifier "pbVar13") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      } while (bVar18);" (do "do") (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + 1;\n        pbVar13 = pbVar13 + 1;\n      }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + 1" (identifier "pbVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" (identifier "bVar15") (= "=") (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" (( "(") (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar15"))) (; ";")) (if_statement "if (bVar15) {\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }\n      else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\n        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_006752b8;\n        puVar8[0x2f] = puVar8 + 0x2d;\n        puVar8[0x30] = puVar8 + 0x2d;\n        lVar10 = *(long *)(param_1 + 0x340);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined4 *)(puVar8 + 0x2d) = 0;\n        puVar8[0x2e] = 0;\n        puVar8[0x31] = 0;\n        *(undefined1 *)(puVar8 + 0x32) = 0;\n        *(undefined4 *)((long)puVar8 + 0x194) = 0;\n        *(undefined1 *)(puVar8 + 0x33) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x338) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }\n      }" ({ "{") (expression_statement "puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);" (assignment_expression "puVar8 = (undefined8 *)FUN_0049cb70(0x1a0)" (identifier "puVar8") (= "=") (cast_expression "(undefined8 *)FUN_0049cb70(0x1a0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0049cb70(0x1a0)" (identifier "FUN_0049cb70") (argument_list "(0x1a0)" (( "(") (number_literal "0x1a0") () ")"))))) (; ";")) (expression_statement "FUN_003c9d20(puVar8,param_2,param_3,param_4);" (call_expression "FUN_003c9d20(puVar8,param_2,param_3,param_4)" (identifier "FUN_003c9d20") (argument_list "(puVar8,param_2,param_3,param_4)" (( "(") (identifier "puVar8") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "*puVar8 = &PTR_FUN_006752b8;" (assignment_expression "*puVar8 = &PTR_FUN_006752b8" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (pointer_expression "&PTR_FUN_006752b8" (& "&") (identifier "PTR_FUN_006752b8"))) (; ";")) (expression_statement "puVar8[0x2f] = puVar8 + 0x2d;" (assignment_expression "puVar8[0x2f] = puVar8 + 0x2d" (subscript_expression "puVar8[0x2f]" (identifier "puVar8") ([ "[") (number_literal "0x2f") (] "]")) (= "=") (binary_expression "puVar8 + 0x2d" (identifier "puVar8") (+ "+") (number_literal "0x2d"))) (; ";")) (expression_statement "puVar8[0x30] = puVar8 + 0x2d;" (assignment_expression "puVar8[0x30] = puVar8 + 0x2d" (subscript_expression "puVar8[0x30]" (identifier "puVar8") ([ "[") (number_literal "0x30") (] "]")) (= "=") (binary_expression "puVar8 + 0x2d" (identifier "puVar8") (+ "+") (number_literal "0x2d"))) (; ";")) (expression_statement "lVar10 = *(long *)(param_1 + 0x340);" (assignment_expression "lVar10 = *(long *)(param_1 + 0x340)" (identifier "lVar10") (= "=") (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")"))))) (; ";")) (expression_statement "puVar8[0x29] = 0;" (assignment_expression "puVar8[0x29] = 0" (subscript_expression "puVar8[0x29]" (identifier "puVar8") ([ "[") (number_literal "0x29") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[0x2a] = 0;" (assignment_expression "puVar8[0x2a] = 0" (subscript_expression "puVar8[0x2a]" (identifier "puVar8") ([ "[") (number_literal "0x2a") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[0x2b] = 0;" (assignment_expression "puVar8[0x2b] = 0" (subscript_expression "puVar8[0x2b]" (identifier "puVar8") ([ "[") (number_literal "0x2b") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar8 + 0x2d) = 0;" (assignment_expression "*(undefined4 *)(puVar8 + 0x2d) = 0" (pointer_expression "*(undefined4 *)(puVar8 + 0x2d)" (* "*") (cast_expression "(undefined4 *)(puVar8 + 0x2d)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x2d)" (( "(") (binary_expression "puVar8 + 0x2d" (identifier "puVar8") (+ "+") (number_literal "0x2d")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[0x2e] = 0;" (assignment_expression "puVar8[0x2e] = 0" (subscript_expression "puVar8[0x2e]" (identifier "puVar8") ([ "[") (number_literal "0x2e") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[0x31] = 0;" (assignment_expression "puVar8[0x31] = 0" (subscript_expression "puVar8[0x31]" (identifier "puVar8") ([ "[") (number_literal "0x31") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar8 + 0x32) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x32) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x32)" (* "*") (cast_expression "(undefined1 *)(puVar8 + 0x32)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x32)" (( "(") (binary_expression "puVar8 + 0x32" (identifier "puVar8") (+ "+") (number_literal "0x32")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((long)puVar8 + 0x194) = 0;" (assignment_expression "*(undefined4 *)((long)puVar8 + 0x194) = 0" (pointer_expression "*(undefined4 *)((long)puVar8 + 0x194)" (* "*") (cast_expression "(undefined4 *)((long)puVar8 + 0x194)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar8 + 0x194)" (( "(") (binary_expression "(long)puVar8 + 0x194" (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8")) (+ "+") (number_literal "0x194")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar8 + 0x33) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x33) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x33)" (* "*") (cast_expression "(undefined1 *)(puVar8 + 0x33)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x33)" (( "(") (binary_expression "puVar8 + 0x33" (identifier "puVar8") (+ "+") (number_literal "0x33")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;" (assignment_expression "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" (* "*") (cast_expression "(byte *)(puVar8 + 0x19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x19)" (( "(") (binary_expression "puVar8 + 0x19" (identifier "puVar8") (+ "+") (number_literal "0x19")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" (* "*") (cast_expression "(byte *)(puVar8 + 0x19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x19)" (( "(") (binary_expression "puVar8 + 0x19" (identifier "puVar8") (+ "+") (number_literal "0x19")) () ")")))) (| "|") (number_literal "0x30"))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 0x338) = puVar8;" (assignment_expression "*(undefined8 **)(param_1 + 0x338) = puVar8" (pointer_expression "*(undefined8 **)(param_1 + 0x338)" (* "*") (cast_expression "(undefined8 **)(param_1 + 0x338)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x338)" (( "(") (binary_expression "param_1 + 0x338" (identifier "param_1") (+ "+") (number_literal "0x338")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "local_40[0] = puVar8;" (assignment_expression "local_40[0] = puVar8" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "puVar8")) (; ";")) (if_statement "if (lVar10 != 0) {\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }" (if "if") (parenthesized_expression "(lVar10 != 0)" (( "(") (binary_expression "lVar10 != 0" (identifier "lVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined8 **)(lVar10 + 0x160) = puVar8;\n        }" ({ "{") (expression_statement "*(undefined8 **)(lVar10 + 0x160) = puVar8;" (assignment_expression "*(undefined8 **)(lVar10 + 0x160) = puVar8" (pointer_expression "*(undefined8 **)(lVar10 + 0x160)" (* "*") (cast_expression "(undefined8 **)(lVar10 + 0x160)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar10 + 0x160)" (( "(") (binary_expression "lVar10 + 0x160" (identifier "lVar10") (+ "+") (number_literal "0x160")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }" (else "else") (compound_statement "{\n        lVar10 = 0xc;\n        pbVar12 = (byte *)".debug_info";\n        pbVar13 = param_2;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);\n        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;\n        puVar8 = (undefined8 *)FUN_0049cb70(0x170);\n                    \n        FUN_003c9d20(puVar8,param_2,param_3,param_4);\n        *puVar8 = &PTR_FUN_00675370;\n        lVar10 = *(long *)(param_1 + 0x338);\n        puVar8[0x29] = 0;\n        puVar8[0x2a] = 0;\n        puVar8[0x2b] = 0;\n        *(undefined1 *)(puVar8 + 0x2d) = 0;\n        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n        *(undefined8 **)(param_1 + 0x340) = puVar8;\n        local_40[0] = puVar8;\n        if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }\n      }" ({ "{") (expression_statement "lVar10 = 0xc;" (assignment_expression "lVar10 = 0xc" (identifier "lVar10") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar12 = (byte *)".debug_info";" (assignment_expression "pbVar12 = (byte *)".debug_info"" (identifier "pbVar12") (= "=") (cast_expression "(byte *)".debug_info"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".debug_info"" (" """) (string_content ".debug_info") (" """)))) (; ";")) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" (identifier "pbVar13") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        } while (bVar15);" (do "do") (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + 1;\n          pbVar13 = pbVar13 + 1;\n        }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" (identifier "bVar16") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + 1" (identifier "pbVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (if_statement "if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;" (if "if") (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" (( "(") (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" (( "(") (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (!= "!=") (identifier "bVar16")) () ")")) (goto_statement "goto LAB_0037f230;" (goto "goto") (statement_identifier "LAB_0037f230") (; ";"))) (expression_statement "puVar8 = (undefined8 *)FUN_0049cb70(0x170);" (assignment_expression "puVar8 = (undefined8 *)FUN_0049cb70(0x170)" (identifier "puVar8") (= "=") (cast_expression "(undefined8 *)FUN_0049cb70(0x170)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0049cb70(0x170)" (identifier "FUN_0049cb70") (argument_list "(0x170)" (( "(") (number_literal "0x170") () ")"))))) (; ";")) (expression_statement "FUN_003c9d20(puVar8,param_2,param_3,param_4);" (call_expression "FUN_003c9d20(puVar8,param_2,param_3,param_4)" (identifier "FUN_003c9d20") (argument_list "(puVar8,param_2,param_3,param_4)" (( "(") (identifier "puVar8") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "*puVar8 = &PTR_FUN_00675370;" (assignment_expression "*puVar8 = &PTR_FUN_00675370" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (pointer_expression "&PTR_FUN_00675370" (& "&") (identifier "PTR_FUN_00675370"))) (; ";")) (expression_statement "lVar10 = *(long *)(param_1 + 0x338);" (assignment_expression "lVar10 = *(long *)(param_1 + 0x338)" (identifier "lVar10") (= "=") (pointer_expression "*(long *)(param_1 + 0x338)" (* "*") (cast_expression "(long *)(param_1 + 0x338)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x338)" (( "(") (binary_expression "param_1 + 0x338" (identifier "param_1") (+ "+") (number_literal "0x338")) () ")"))))) (; ";")) (expression_statement "puVar8[0x29] = 0;" (assignment_expression "puVar8[0x29] = 0" (subscript_expression "puVar8[0x29]" (identifier "puVar8") ([ "[") (number_literal "0x29") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[0x2a] = 0;" (assignment_expression "puVar8[0x2a] = 0" (subscript_expression "puVar8[0x2a]" (identifier "puVar8") ([ "[") (number_literal "0x2a") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[0x2b] = 0;" (assignment_expression "puVar8[0x2b] = 0" (subscript_expression "puVar8[0x2b]" (identifier "puVar8") ([ "[") (number_literal "0x2b") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar8 + 0x2d) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x2d) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x2d)" (* "*") (cast_expression "(undefined1 *)(puVar8 + 0x2d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x2d)" (( "(") (binary_expression "puVar8 + 0x2d" (identifier "puVar8") (+ "+") (number_literal "0x2d")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;" (assignment_expression "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" (* "*") (cast_expression "(byte *)(puVar8 + 0x19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x19)" (( "(") (binary_expression "puVar8 + 0x19" (identifier "puVar8") (+ "+") (number_literal "0x19")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" (* "*") (cast_expression "(byte *)(puVar8 + 0x19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x19)" (( "(") (binary_expression "puVar8 + 0x19" (identifier "puVar8") (+ "+") (number_literal "0x19")) () ")")))) (| "|") (number_literal "0x30"))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 0x340) = puVar8;" (assignment_expression "*(undefined8 **)(param_1 + 0x340) = puVar8" (pointer_expression "*(undefined8 **)(param_1 + 0x340)" (* "*") (cast_expression "(undefined8 **)(param_1 + 0x340)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "local_40[0] = puVar8;" (assignment_expression "local_40[0] = puVar8" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "puVar8")) (; ";")) (if_statement "if (lVar10 != 0) {\n          puVar8[0x2c] = lVar10;\n        }" (if "if") (parenthesized_expression "(lVar10 != 0)" (( "(") (binary_expression "lVar10 != 0" (identifier "lVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          puVar8[0x2c] = lVar10;\n        }" ({ "{") (expression_statement "puVar8[0x2c] = lVar10;" (assignment_expression "puVar8[0x2c] = lVar10" (subscript_expression "puVar8[0x2c]" (identifier "puVar8") ([ "[") (number_literal "0x2c") (] "]")) (= "=") (identifier "lVar10")) (; ";")) (} "}"))) (} "}")))) (} "}")))) (} "}")) (else_clause "else {\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    \n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }" (else "else") (compound_statement "{\n    lVar9 = 6;\n    pbVar12 = &DAT_00533552;\n    pbVar13 = param_2;\n    do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);\n    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;\n    puVar8 = (undefined8 *)FUN_0049cb70(0x178);\n                    \n    FUN_003c9d20(puVar8,param_2,param_3,param_4);\n    *puVar8 = &PTR_FUN_00675900;\n    puVar8[0x29] = lVar10;\n    puVar8[0x2b] = puVar8 + 0x2d;\n    puVar8[0x2c] = 0;\n    *(undefined1 *)(puVar8 + 0x2d) = 0;\n    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;\n    local_40[0] = puVar8;\n  }" ({ "{") (expression_statement "lVar9 = 6;" (assignment_expression "lVar9 = 6" (identifier "lVar9") (= "=") (number_literal "6")) (; ";")) (expression_statement "pbVar12 = &DAT_00533552;" (assignment_expression "pbVar12 = &DAT_00533552" (identifier "pbVar12") (= "=") (pointer_expression "&DAT_00533552" (& "&") (identifier "DAT_00533552"))) (; ";")) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" (identifier "pbVar13") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    } while (bVar15);" (do "do") (compound_statement "{\n      if (lVar9 == 0) break;\n      lVar9 = lVar9 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar15 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + 1;\n      pbVar13 = pbVar13 + 1;\n    }" ({ "{") (if_statement "if (lVar9 == 0) break;" (if "if") (parenthesized_expression "(lVar9 == 0)" (( "(") (binary_expression "lVar9 == 0" (identifier "lVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" (identifier "lVar9") (= "=") (binary_expression "lVar9 + -1" (identifier "lVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" (identifier "bVar16") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + 1" (identifier "pbVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (if_statement "if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;" (if "if") (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" (( "(") (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" (( "(") (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (!= "!=") (identifier "bVar16")) () ")")) (goto_statement "goto LAB_0037f1e5;" (goto "goto") (statement_identifier "LAB_0037f1e5") (; ";"))) (expression_statement "puVar8 = (undefined8 *)FUN_0049cb70(0x178);" (assignment_expression "puVar8 = (undefined8 *)FUN_0049cb70(0x178)" (identifier "puVar8") (= "=") (cast_expression "(undefined8 *)FUN_0049cb70(0x178)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0049cb70(0x178)" (identifier "FUN_0049cb70") (argument_list "(0x178)" (( "(") (number_literal "0x178") () ")"))))) (; ";")) (expression_statement "FUN_003c9d20(puVar8,param_2,param_3,param_4);" (call_expression "FUN_003c9d20(puVar8,param_2,param_3,param_4)" (identifier "FUN_003c9d20") (argument_list "(puVar8,param_2,param_3,param_4)" (( "(") (identifier "puVar8") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "*puVar8 = &PTR_FUN_00675900;" (assignment_expression "*puVar8 = &PTR_FUN_00675900" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (pointer_expression "&PTR_FUN_00675900" (& "&") (identifier "PTR_FUN_00675900"))) (; ";")) (expression_statement "puVar8[0x29] = lVar10;" (assignment_expression "puVar8[0x29] = lVar10" (subscript_expression "puVar8[0x29]" (identifier "puVar8") ([ "[") (number_literal "0x29") (] "]")) (= "=") (identifier "lVar10")) (; ";")) (expression_statement "puVar8[0x2b] = puVar8 + 0x2d;" (assignment_expression "puVar8[0x2b] = puVar8 + 0x2d" (subscript_expression "puVar8[0x2b]" (identifier "puVar8") ([ "[") (number_literal "0x2b") (] "]")) (= "=") (binary_expression "puVar8 + 0x2d" (identifier "puVar8") (+ "+") (number_literal "0x2d"))) (; ";")) (expression_statement "puVar8[0x2c] = 0;" (assignment_expression "puVar8[0x2c] = 0" (subscript_expression "puVar8[0x2c]" (identifier "puVar8") ([ "[") (number_literal "0x2c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar8 + 0x2d) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x2d) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x2d)" (* "*") (cast_expression "(undefined1 *)(puVar8 + 0x2d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x2d)" (( "(") (binary_expression "puVar8 + 0x2d" (identifier "puVar8") (+ "+") (number_literal "0x2d")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;" (assignment_expression "*(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" (* "*") (cast_expression "(byte *)(puVar8 + 0x19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x19)" (( "(") (binary_expression "puVar8 + 0x19" (identifier "puVar8") (+ "+") (number_literal "0x19")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar8 + 0x19) | 0x30" (pointer_expression "*(byte *)(puVar8 + 0x19)" (* "*") (cast_expression "(byte *)(puVar8 + 0x19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x19)" (( "(") (binary_expression "puVar8 + 0x19" (identifier "puVar8") (+ "+") (number_literal "0x19")) () ")")))) (| "|") (number_literal "0x30"))) (; ";")) (expression_statement "local_40[0] = puVar8;" (assignment_expression "local_40[0] = puVar8" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "puVar8")) (; ";")) (} "}")))) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" (identifier "puVar8") (= "=") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (; ";")) (if_statement "if (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;\n    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);\n    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;\n    if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }\n    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;\n  }\n  else {\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }" (if "if") (parenthesized_expression "(*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0')" (( "(") (binary_expression "*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0'" (pointer_expression "*(char *)(*(long *)(param_1 + 8) + 0x148)" (* "*") (cast_expression "(char *)(*(long *)(param_1 + 8) + 0x148)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" (( "(") (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x148")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;\n    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);\n    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;\n    if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }\n    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;\n  }" ({ "{") (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x10" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0037f97a;" (goto "goto") (statement_identifier "LAB_0037f97a") (; ";"))) (expression_statement "local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);" (assignment_expression "local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59)" (identifier "local_59") (= "=") (pointer_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59)" (* "*") (cast_expression "(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59)" (( "(") (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x10" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x8c59")) () ")"))))) (; ";")) (if_statement "if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;" (if "if") (parenthesized_expression "((local_59 == '\0') || (((uint)param_4 & 3) != 3))" (( "(") (binary_expression "(local_59 == '\0') || (((uint)param_4 & 3) != 3)" (parenthesized_expression "(local_59 == '\0')" (( "(") (binary_expression "local_59 == '\0'" (identifier "local_59") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(((uint)param_4 & 3) != 3)" (( "(") (binary_expression "((uint)param_4 & 3) != 3" (parenthesized_expression "((uint)param_4 & 3)" (( "(") (binary_expression "(uint)param_4 & 3" (cast_expression "(uint)param_4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_4")) (& "&") (number_literal "3")) () ")")) (!= "!=") (number_literal "3")) () ")"))) () ")")) (goto_statement "goto LAB_0037f273;" (goto "goto") (statement_identifier "LAB_0037f273") (; ";"))) (if_statement "if (param_3 == 1) {\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }\n    else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }" (if "if") (parenthesized_expression "(param_3 == 1)" (( "(") (binary_expression "param_3 == 1" (identifier "param_3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      bVar15 = false;\n      bVar18 = (param_4 & 0x400) == 0;\n      if (!bVar18) goto LAB_0037f278;\n      lVar10 = 0xd;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (bVar15) goto LAB_0037f278;\n      lVar10 = 0x13;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".data.rel.ro.local";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      bVar18 = false;\n      bVar15 = (!bVar16 && !bVar15) == bVar16;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }\n    }" ({ "{") (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (expression_statement "bVar18 = (param_4 & 0x400) == 0;" (assignment_expression "bVar18 = (param_4 & 0x400) == 0" (identifier "bVar18") (= "=") (binary_expression "(param_4 & 0x400) == 0" (parenthesized_expression "(param_4 & 0x400)" (( "(") (binary_expression "param_4 & 0x400" (identifier "param_4") (& "&") (number_literal "0x400")) () ")")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (!bVar18) goto LAB_0037f278;" (if "if") (parenthesized_expression "(!bVar18)" (( "(") (unary_expression "!bVar18" (! "!") (identifier "bVar18")) () ")")) (goto_statement "goto LAB_0037f278;" (goto "goto") (statement_identifier "LAB_0037f278") (; ";"))) (expression_statement "lVar10 = 0xd;" (assignment_expression "lVar10 = 0xd" (identifier "lVar10") (= "=") (number_literal "0xd")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".data.rel.ro";" (assignment_expression "pbVar13 = (byte *)".data.rel.ro"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".data.rel.ro"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".data.rel.ro"" (" """) (string_content ".data.rel.ro") (" """)))) (; ";")) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);" (do "do") (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" (identifier "bVar15") (= "=") (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" (( "(") (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar15"))) (; ";")) (if_statement "if (bVar15) goto LAB_0037f278;" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (goto_statement "goto LAB_0037f278;" (goto "goto") (statement_identifier "LAB_0037f278") (; ";"))) (expression_statement "lVar10 = 0x13;" (assignment_expression "lVar10 = 0x13" (identifier "lVar10") (= "=") (number_literal "0x13")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".data.rel.ro.local";" (assignment_expression "pbVar13 = (byte *)".data.rel.ro.local"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".data.rel.ro.local"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".data.rel.ro.local"" (" """) (string_content ".data.rel.ro.local") (" """)))) (; ";")) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);" (do "do") (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" (identifier "bVar16") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" (identifier "bVar18") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (!bVar16 && !bVar15) == bVar16;" (assignment_expression "bVar15 = (!bVar16 && !bVar15) == bVar16" (identifier "bVar15") (= "=") (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" (( "(") (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar16"))) (; ";")) (if_statement "if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }" (if "if") (parenthesized_expression "(!bVar15)" (( "(") (unary_expression "!bVar15" (! "!") (identifier "bVar15")) () ")")) (compound_statement "{\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar16 = false;\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }\n        goto LAB_0037f278;\n      }" ({ "{") (expression_statement "lVar10 = 7;" (assignment_expression "lVar10 = 7" (identifier "lVar10") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".ctors";" (assignment_expression "pbVar13 = (byte *)".ctors"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".ctors"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".ctors"" (" """) (string_content ".ctors") (" """)))) (; ";")) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);" (do "do") (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (!bVar18 && !bVar15) == bVar18;" (assignment_expression "bVar15 = (!bVar18 && !bVar15) == bVar18" (identifier "bVar15") (= "=") (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" (( "(") (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" (! "!") (identifier "bVar18")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar18"))) (; ";")) (if_statement "if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }" (if "if") (parenthesized_expression "(!bVar15)" (( "(") (unary_expression "!bVar15" (! "!") (identifier "bVar15")) () ")")) (compound_statement "{\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;\n        }" ({ "{") (expression_statement "lVar10 = 7;" (assignment_expression "lVar10 = 7" (identifier "lVar10") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".dtors";" (assignment_expression "pbVar13 = (byte *)".dtors"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".dtors"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".dtors"" (" """) (string_content ".dtors") (" """)))) (; ";")) (do_statement "do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);" (do "do") (compound_statement "{\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" (identifier "bVar16") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (if_statement "if (((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;" (if "if") (parenthesized_expression "(((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0))" (( "(") (binary_expression "((!bVar16 && !bVar15) != bVar16) &&\n             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)" (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" (( "(") (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" (( "(") (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (!= "!=") (identifier "bVar16")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)" (( "(") (comma_expression "iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0" (assignment_expression "iVar4 = strcmp((char *)param_2,".jcr")" (identifier "iVar4") (= "=") (call_expression "strcmp((char *)param_2,".jcr")" (identifier "strcmp") (argument_list "((char *)param_2,".jcr")" (( "(") (cast_expression "(char *)param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")) (, ",") (string_literal "".jcr"" (" """) (string_content ".jcr") (" """)) () ")")))) (, ",") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_0037f273;" (goto "goto") (statement_identifier "LAB_0037f273") (; ";"))) (} "}"))) (goto_statement "goto LAB_0037f278;" (goto "goto") (statement_identifier "LAB_0037f278") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }" (else "else") (compound_statement "{\n      if (2 < param_3 - 0xeU) goto LAB_0037f273;\nLAB_0037f278:\n      local_59 = '\0';\n    }" ({ "{") (if_statement "if (2 < param_3 - 0xeU) goto LAB_0037f273;" (if "if") (parenthesized_expression "(2 < param_3 - 0xeU)" (( "(") (binary_expression "2 < param_3 - 0xeU" (number_literal "2") (< "<") (binary_expression "param_3 - 0xeU" (identifier "param_3") (- "-") (number_literal "0xeU"))) () ")")) (goto_statement "goto LAB_0037f273;" (goto "goto") (statement_identifier "LAB_0037f273") (; ";"))) (labeled_statement "LAB_0037f278:\n      local_59 = '\0';" (statement_identifier "LAB_0037f278") (: ":") (expression_statement "local_59 = '\0';" (assignment_expression "local_59 = '\0'" (identifier "local_59") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";"))) (} "}")))) (expression_statement "*(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;" (assignment_expression "*(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20" (pointer_expression "*(byte *)((long)puVar8 + 0xc9)" (* "*") (cast_expression "(byte *)((long)puVar8 + 0xc9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar8 + 0xc9)" (( "(") (binary_expression "(long)puVar8 + 0xc9" (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8")) (+ "+") (number_literal "0xc9")) () ")")))) (= "=") (binary_expression "*(byte *)((long)puVar8 + 0xc9) | 0x20" (pointer_expression "*(byte *)((long)puVar8 + 0xc9)" (* "*") (cast_expression "(byte *)((long)puVar8 + 0xc9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar8 + 0xc9)" (( "(") (binary_expression "(long)puVar8 + 0xc9" (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8")) (+ "+") (number_literal "0xc9")) () ")")))) (| "|") (number_literal "0x20"))) (; ";")) (} "}")) (else_clause "else {\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }" (else "else") (compound_statement "{\nLAB_0037f273:\n    local_59 = param_6;\n    if (param_6 != '\0') goto LAB_0037f278;\n  }" ({ "{") (labeled_statement "LAB_0037f273:\n    local_59 = param_6;" (statement_identifier "LAB_0037f273") (: ":") (expression_statement "local_59 = param_6;" (assignment_expression "local_59 = param_6" (identifier "local_59") (= "=") (identifier "param_6")) (; ";"))) (if_statement "if (param_6 != '\0') goto LAB_0037f278;" (if "if") (parenthesized_expression "(param_6 != '\0')" (( "(") (binary_expression "param_6 != '\0'" (identifier "param_6") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0037f278;" (goto "goto") (statement_identifier "LAB_0037f278") (; ";"))) (} "}")))) (if_statement "if (((int)param_5 == 0) && ((param_4 & 2) != 0)) {\n    uVar3 = FUN_0037b280(param_1,puVar8,local_59);\n    uVar14 = (ulong)uVar3;\n    puVar8 = local_40[0];\n  }" (if "if") (parenthesized_expression "(((int)param_5 == 0) && ((param_4 & 2) != 0))" (( "(") (binary_expression "((int)param_5 == 0) && ((param_4 & 2) != 0)" (parenthesized_expression "((int)param_5 == 0)" (( "(") (binary_expression "(int)param_5 == 0" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((param_4 & 2) != 0)" (( "(") (binary_expression "(param_4 & 2) != 0" (parenthesized_expression "(param_4 & 2)" (( "(") (binary_expression "param_4 & 2" (identifier "param_4") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    uVar3 = FUN_0037b280(param_1,puVar8,local_59);\n    uVar14 = (ulong)uVar3;\n    puVar8 = local_40[0];\n  }" ({ "{") (expression_statement "uVar3 = FUN_0037b280(param_1,puVar8,local_59);" (assignment_expression "uVar3 = FUN_0037b280(param_1,puVar8,local_59)" (identifier "uVar3") (= "=") (call_expression "FUN_0037b280(param_1,puVar8,local_59)" (identifier "FUN_0037b280") (argument_list "(param_1,puVar8,local_59)" (( "(") (identifier "param_1") (, ",") (identifier "puVar8") (, ",") (identifier "local_59") () ")")))) (; ";")) (expression_statement "uVar14 = (ulong)uVar3;" (assignment_expression "uVar14 = (ulong)uVar3" (identifier "uVar14") (= "=") (cast_expression "(ulong)uVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar3"))) (; ";")) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" (identifier "puVar8") (= "=") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (expression_statement "puVar2 = PTR_DAT_0067cb08;" (assignment_expression "puVar2 = PTR_DAT_0067cb08" (identifier "puVar2") (= "=") (identifier "PTR_DAT_0067cb08")) (; ";")) (expression_statement "uVar3 = (uint)uVar14;" (assignment_expression "uVar3 = (uint)uVar14" (identifier "uVar3") (= "=") (cast_expression "(uint)uVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar14"))) (; ";")) (expression_statement "*(uint *)(puVar8 + 0xf) = uVar3;" (assignment_expression "*(uint *)(puVar8 + 0xf) = uVar3" (pointer_expression "*(uint *)(puVar8 + 0xf)" (* "*") (cast_expression "(uint *)(puVar8 + 0xf)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0xf)" (( "(") (binary_expression "puVar8 + 0xf" (identifier "puVar8") (+ "+") (number_literal "0xf")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "plVar1 = *(long **)(puVar2 + 0x18);" (assignment_expression "plVar1 = *(long **)(puVar2 + 0x18)" (identifier "plVar1") (= "=") (pointer_expression "*(long **)(puVar2 + 0x18)" (* "*") (cast_expression "(long **)(puVar2 + 0x18)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar2 + 0x18)" (( "(") (binary_expression "puVar2 + 0x18" (identifier "puVar2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (plVar1 == (long *)0x0) goto LAB_0037fb03;" (if "if") (parenthesized_expression "(plVar1 == (long *)0x0)" (( "(") (binary_expression "plVar1 == (long *)0x0" (identifier "plVar1") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0037fb03;" (goto "goto") (statement_identifier "LAB_0037fb03") (; ";"))) (if_statement "if (*(code **)(*plVar1 + 0x18) == FUN_001a49c0) {\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;\nLAB_0037f2d9:\n    *puVar8 = local_40[0];\n    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;\n  }\n  else {\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }" (if "if") (parenthesized_expression "(*(code **)(*plVar1 + 0x18) == FUN_001a49c0)" (( "(") (binary_expression "*(code **)(*plVar1 + 0x18) == FUN_001a49c0" (pointer_expression "*(code **)(*plVar1 + 0x18)" (* "*") (cast_expression "(code **)(*plVar1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar1 + 0x18)" (( "(") (binary_expression "*plVar1 + 0x18" (pointer_expression "*plVar1" (* "*") (identifier "plVar1")) (+ "+") (number_literal "0x18")) () ")")))) (== "==") (identifier "FUN_001a49c0")) () ")")) (compound_statement "{\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;\nLAB_0037f2d9:\n    *puVar8 = local_40[0];\n    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;\n  }" ({ "{") (expression_statement "puVar8 = *(undefined8 **)(param_1 + 0x250);" (assignment_expression "puVar8 = *(undefined8 **)(param_1 + 0x250)" (identifier "puVar8") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 0x250)" (* "*") (cast_expression "(undefined8 **)(param_1 + 0x250)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")"))))) (; ";")) (if_statement "if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;" (if "if") (parenthesized_expression "(puVar8 == *(undefined8 **)(param_1 + 600))" (( "(") (binary_expression "puVar8 == *(undefined8 **)(param_1 + 600)" (identifier "puVar8") (== "==") (pointer_expression "*(undefined8 **)(param_1 + 600)" (* "*") (cast_expression "(undefined8 **)(param_1 + 600)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 600)" (( "(") (binary_expression "param_1 + 600" (identifier "param_1") (+ "+") (number_literal "600")) () ")"))))) () ")")) (goto_statement "goto LAB_0037f938;" (goto "goto") (statement_identifier "LAB_0037f938") (; ";"))) (labeled_statement "LAB_0037f2d9:\n    *puVar8 = local_40[0];" (statement_identifier "LAB_0037f2d9") (: ":") (expression_statement "*puVar8 = local_40[0];" (assignment_expression "*puVar8 = local_40[0]" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (; ";"))) (expression_statement "*(undefined8 **)(param_1 + 0x250) = puVar8 + 1;" (assignment_expression "*(undefined8 **)(param_1 + 0x250) = puVar8 + 1" (pointer_expression "*(undefined8 **)(param_1 + 0x250)" (* "*") (cast_expression "(undefined8 **)(param_1 + 0x250)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")")))) (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }" (else "else") (compound_statement "{\n    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);\n    puVar8 = *(undefined8 **)(param_1 + 0x250);\n    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;\nLAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);\n  }" ({ "{") (expression_statement "(**(code **)(*plVar1 + 0x18))(plVar1,puVar8);" (call_expression "(**(code **)(*plVar1 + 0x18))(plVar1,puVar8)" (parenthesized_expression "(**(code **)(*plVar1 + 0x18))" (( "(") (pointer_expression "**(code **)(*plVar1 + 0x18)" (* "*") (pointer_expression "*(code **)(*plVar1 + 0x18)" (* "*") (cast_expression "(code **)(*plVar1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar1 + 0x18)" (( "(") (binary_expression "*plVar1 + 0x18" (pointer_expression "*plVar1" (* "*") (identifier "plVar1")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(plVar1,puVar8)" (( "(") (identifier "plVar1") (, ",") (identifier "puVar8") () ")"))) (; ";")) (expression_statement "puVar8 = *(undefined8 **)(param_1 + 0x250);" (assignment_expression "puVar8 = *(undefined8 **)(param_1 + 0x250)" (identifier "puVar8") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 0x250)" (* "*") (cast_expression "(undefined8 **)(param_1 + 0x250)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")"))))) (; ";")) (if_statement "if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;" (if "if") (parenthesized_expression "(puVar8 != *(undefined8 **)(param_1 + 600))" (( "(") (binary_expression "puVar8 != *(undefined8 **)(param_1 + 600)" (identifier "puVar8") (!= "!=") (pointer_expression "*(undefined8 **)(param_1 + 600)" (* "*") (cast_expression "(undefined8 **)(param_1 + 600)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 600)" (( "(") (binary_expression "param_1 + 600" (identifier "param_1") (+ "+") (number_literal "600")) () ")"))))) () ")")) (goto_statement "goto LAB_0037f2d9;" (goto "goto") (statement_identifier "LAB_0037f2d9") (; ";"))) (labeled_statement "LAB_0037f938:\n    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);" (statement_identifier "LAB_0037f938") (: ":") (expression_statement "FUN_00387bd0(param_1 + 0x248,puVar8,local_40);" (call_expression "FUN_00387bd0(param_1 + 0x248,puVar8,local_40)" (identifier "FUN_00387bd0") (argument_list "(param_1 + 0x248,puVar8,local_40)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) (, ",") (identifier "puVar8") (, ",") (identifier "local_40") () ")"))) (; ";"))) (} "}")))) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" (identifier "puVar8") (= "=") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "lVar10 = *(long *)(param_1 + 8);" (assignment_expression "lVar10 = *(long *)(param_1 + 8)" (identifier "lVar10") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10);" (assignment_expression "lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10)" (identifier "lVar9") (= "=") (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x10" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (*(char *)(lVar10 + 0x148) == '\0') {\n    if (lVar9 == 0) {\nLAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar15 = false;\n    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';\n    if (!bVar18) goto LAB_0037f347;\n    lVar11 = 0xc;\n    pbVar12 = param_2;\n    pbVar13 = (byte *)".init_array";\n    do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar18) == bVar15;\n    if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';\n    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }\n  }\n  else {\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }" (if "if") (parenthesized_expression "(*(char *)(lVar10 + 0x148) == '\0')" (( "(") (binary_expression "*(char *)(lVar10 + 0x148) == '\0'" (pointer_expression "*(char *)(lVar10 + 0x148)" (* "*") (cast_expression "(char *)(lVar10 + 0x148)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x148)" (( "(") (binary_expression "lVar10 + 0x148" (identifier "lVar10") (+ "+") (number_literal "0x148")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (lVar9 == 0) {\nLAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }\n    bVar15 = false;\n    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';\n    if (!bVar18) goto LAB_0037f347;\n    lVar11 = 0xc;\n    pbVar12 = param_2;\n    pbVar13 = (byte *)".init_array";\n    do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar18) == bVar15;\n    if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }\nLAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';\n    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }\n  }" ({ "{") (if_statement "if (lVar9 == 0) {\nLAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }" (if "if") (parenthesized_expression "(lVar9 == 0)" (( "(") (binary_expression "lVar9 == 0" (identifier "lVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n    }" ({ "{") (labeled_statement "LAB_0037f97a:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x5c,"options");" (statement_identifier "LAB_0037f97a") (: ":") (expression_statement "FUN_00352af0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_00352af0") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";"))) (} "}"))) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (expression_statement "bVar18 = *(char *)(lVar9 + 0x5051) == '\0';" (assignment_expression "bVar18 = *(char *)(lVar9 + 0x5051) == '\0'" (identifier "bVar18") (= "=") (binary_expression "*(char *)(lVar9 + 0x5051) == '\0'" (pointer_expression "*(char *)(lVar9 + 0x5051)" (* "*") (cast_expression "(char *)(lVar9 + 0x5051)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + 0x5051)" (( "(") (binary_expression "lVar9 + 0x5051" (identifier "lVar9") (+ "+") (number_literal "0x5051")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (if_statement "if (!bVar18) goto LAB_0037f347;" (if "if") (parenthesized_expression "(!bVar18)" (( "(") (unary_expression "!bVar18" (! "!") (identifier "bVar18")) () ")")) (goto_statement "goto LAB_0037f347;" (goto "goto") (statement_identifier "LAB_0037f347") (; ";"))) (expression_statement "lVar11 = 0xc;" (assignment_expression "lVar11 = 0xc" (identifier "lVar11") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".init_array";" (assignment_expression "pbVar13 = (byte *)".init_array"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".init_array"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".init_array"" (" """) (string_content ".init_array") (" """)))) (; ";")) (do_statement "do {\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    } while (bVar18);" (do "do") (compound_statement "{\n      if (lVar11 == 0) break;\n      lVar11 = lVar11 + -1;\n      bVar15 = *pbVar12 < *pbVar13;\n      bVar18 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n    }" ({ "{") (if_statement "if (lVar11 == 0) break;" (if "if") (parenthesized_expression "(lVar11 == 0)" (( "(") (binary_expression "lVar11 == 0" (identifier "lVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + -1" (identifier "lVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" (identifier "bVar15") (= "=") (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" (( "(") (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar15"))) (; ";")) (if_statement "if (bVar15) {\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }\n    else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\nLAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;\n    }" ({ "{") (labeled_statement "LAB_0037f340:\n      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;" (statement_identifier "LAB_0037f340") (: ":") (expression_statement "*(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;" (assignment_expression "*(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4" (pointer_expression "*(byte *)((long)local_40[0] + 0xc9)" (* "*") (cast_expression "(byte *)((long)local_40[0] + 0xc9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_40[0] + 0xc9)" (( "(") (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (+ "+") (number_literal "0xc9")) () ")")))) (= "=") (binary_expression "*(byte *)((long)local_40[0] + 0xc9) | 4" (pointer_expression "*(byte *)((long)local_40[0] + 0xc9)" (* "*") (cast_expression "(byte *)((long)local_40[0] + 0xc9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_40[0] + 0xc9)" (( "(") (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (+ "+") (number_literal "0xc9")) () ")")))) (| "|") (number_literal "4"))) (; ";"))) (} "}")) (else_clause "else {\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }" (else "else") (compound_statement "{\n      lVar11 = 0xc;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".fini_array";\n      do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);\n      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;\n      bVar15 = false;\n      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';\n      if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }\n    }" ({ "{") (expression_statement "lVar11 = 0xc;" (assignment_expression "lVar11 = 0xc" (identifier "lVar11") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".fini_array";" (assignment_expression "pbVar13 = (byte *)".fini_array"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".fini_array"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".fini_array"" (" """) (string_content ".fini_array") (" """)))) (; ";")) (do_statement "do {\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar15);" (do "do") (compound_statement "{\n        if (lVar11 == 0) break;\n        lVar11 = lVar11 + -1;\n        bVar16 = *pbVar12 < *pbVar13;\n        bVar15 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" ({ "{") (if_statement "if (lVar11 == 0) break;" (if "if") (parenthesized_expression "(lVar11 == 0)" (( "(") (binary_expression "lVar11 == 0" (identifier "lVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + -1" (identifier "lVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" (identifier "bVar16") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (if_statement "if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;" (if "if") (parenthesized_expression "((!bVar16 && !bVar15) == bVar16)" (( "(") (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" (( "(") (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar16")) () ")")) (goto_statement "goto LAB_0037f340;" (goto "goto") (statement_identifier "LAB_0037f340") (; ";"))) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (expression_statement "bVar18 = *(char *)(lVar9 + 0x1179) == '\0';" (assignment_expression "bVar18 = *(char *)(lVar9 + 0x1179) == '\0'" (identifier "bVar18") (= "=") (binary_expression "*(char *)(lVar9 + 0x1179) == '\0'" (pointer_expression "*(char *)(lVar9 + 0x1179)" (* "*") (cast_expression "(char *)(lVar9 + 0x1179)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + 0x1179)" (( "(") (binary_expression "lVar9 + 0x1179" (identifier "lVar9") (+ "+") (number_literal "0x1179")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (if_statement "if (bVar18) {\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (compound_statement "{\n        lVar11 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);\n        bVar16 = false;\n        bVar15 = (!bVar15 && !bVar18) == bVar15;\n        if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }\n        goto LAB_0037f340;\n      }" ({ "{") (expression_statement "lVar11 = 7;" (assignment_expression "lVar11 = 7" (identifier "lVar11") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".ctors";" (assignment_expression "pbVar13 = (byte *)".ctors"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".ctors"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".ctors"" (" """) (string_content ".ctors") (" """)))) (; ";")) (do_statement "do {\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar18);" (do "do") (compound_statement "{\n          if (lVar11 == 0) break;\n          lVar11 = lVar11 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar18 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" ({ "{") (if_statement "if (lVar11 == 0) break;" (if "if") (parenthesized_expression "(lVar11 == 0)" (( "(") (binary_expression "lVar11 == 0" (identifier "lVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + -1" (identifier "lVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" (identifier "bVar15") (= "=") (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" (( "(") (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar15"))) (; ";")) (if_statement "if (!bVar15) {\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }" (if "if") (parenthesized_expression "(!bVar15)" (( "(") (unary_expression "!bVar15" (! "!") (identifier "bVar15")) () ")")) (compound_statement "{\n          lVar11 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;\n        }" ({ "{") (expression_statement "lVar11 = 7;" (assignment_expression "lVar11 = 7" (identifier "lVar11") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".dtors";" (assignment_expression "pbVar13 = (byte *)".dtors"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".dtors"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".dtors"" (" """) (string_content ".dtors") (" """)))) (; ";")) (do_statement "do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);" (do "do") (compound_statement "{\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar16 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          }" ({ "{") (if_statement "if (lVar11 == 0) break;" (if "if") (parenthesized_expression "(lVar11 == 0)" (( "(") (binary_expression "lVar11 == 0" (identifier "lVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + -1" (identifier "lVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" (identifier "bVar16") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (if_statement "if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;" (if "if") (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" (( "(") (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" (( "(") (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (!= "!=") (identifier "bVar16")) () ")")) (goto_statement "goto LAB_0037f347;" (goto "goto") (statement_identifier "LAB_0037f347") (; ";"))) (} "}"))) (goto_statement "goto LAB_0037f340;" (goto "goto") (statement_identifier "LAB_0037f340") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_0037f347:\n    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';" (statement_identifier "LAB_0037f347") (: ":") (expression_statement "bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';" (assignment_expression "bVar15 = *(char *)(lVar9 + 0x62b9) == '\0'" (identifier "bVar15") (= "=") (binary_expression "*(char *)(lVar9 + 0x62b9) == '\0'" (pointer_expression "*(char *)(lVar9 + 0x62b9)" (* "*") (cast_expression "(char *)(lVar9 + 0x62b9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + 0x62b9)" (( "(") (binary_expression "lVar9 + 0x62b9" (identifier "lVar9") (+ "+") (number_literal "0x62b9")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";"))) (if_statement "if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15))" (( "(") (binary_expression "((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&\n       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)" (parenthesized_expression "((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15))" (( "(") (binary_expression "(!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)" (parenthesized_expression "(!bVar15)" (( "(") (unary_expression "!bVar15" (! "!") (identifier "bVar15")) () ")")) (&& "&&") (parenthesized_expression "(bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)" (( "(") (comma_expression "bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15" (assignment_expression "bVar15 = *(char *)(lVar10 + 0x148) == '\0'" (identifier "bVar15") (= "=") (binary_expression "*(char *)(lVar10 + 0x148) == '\0'" (pointer_expression "*(char *)(lVar10 + 0x148)" (* "*") (cast_expression "(char *)(lVar10 + 0x148)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x148)" (( "(") (binary_expression "lVar10 + 0x148" (identifier "lVar10") (+ "+") (number_literal "0x148")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (, ",") (identifier "bVar15")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)" (( "(") (comma_expression "bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15" (assignment_expression "bVar15 = *(char *)(param_1 + 0x371) == '\0'" (identifier "bVar15") (= "=") (binary_expression "*(char *)(param_1 + 0x371) == '\0'" (pointer_expression "*(char *)(param_1 + 0x371)" (* "*") (cast_expression "(char *)(param_1 + 0x371)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x371)" (( "(") (binary_expression "param_1 + 0x371" (identifier "param_1") (+ "+") (number_literal "0x371")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (, ",") (identifier "bVar15")) () ")"))) () ")")) (compound_statement "{\n      bVar18 = false;\n      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';\n      if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }\n    }" ({ "{") (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" (identifier "bVar18") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = *(char *)(lVar9 + 0x5051) == '\0';" (assignment_expression "bVar15 = *(char *)(lVar9 + 0x5051) == '\0'" (identifier "bVar15") (= "=") (binary_expression "*(char *)(lVar9 + 0x5051) == '\0'" (pointer_expression "*(char *)(lVar9 + 0x5051)" (* "*") (cast_expression "(char *)(lVar9 + 0x5051)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + 0x5051)" (( "(") (binary_expression "lVar9 + 0x5051" (identifier "lVar9") (+ "+") (number_literal "0x5051")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (if_statement "if (bVar15) {\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\n        lVar10 = 6;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".text";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar15 = (!bVar18 && !bVar15) == bVar18;\n        if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }\n      }" ({ "{") (expression_statement "lVar10 = 6;" (assignment_expression "lVar10 = 6" (identifier "lVar10") (= "=") (number_literal "6")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".text";" (assignment_expression "pbVar13 = (byte *)".text"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".text"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".text"" (" """) (string_content ".text") (" """)))) (; ";")) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);" (do "do") (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar18 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar15 = (!bVar18 && !bVar15) == bVar18;" (assignment_expression "bVar15 = (!bVar18 && !bVar15) == bVar18" (identifier "bVar15") (= "=") (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" (( "(") (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" (! "!") (identifier "bVar18")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar18"))) (; ";")) (if_statement "if (bVar15) {\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\n          pbVar12 = (byte *)((long)local_40[0] + 0xc9);\n          *pbVar12 = *pbVar12 | 4;\n          bVar15 = *pbVar12 == 0;\n        }" ({ "{") (expression_statement "pbVar12 = (byte *)((long)local_40[0] + 0xc9);" (assignment_expression "pbVar12 = (byte *)((long)local_40[0] + 0xc9)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)((long)local_40[0] + 0xc9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_40[0] + 0xc9)" (( "(") (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (+ "+") (number_literal "0xc9")) () ")")))) (; ";")) (expression_statement "*pbVar12 = *pbVar12 | 4;" (assignment_expression "*pbVar12 = *pbVar12 | 4" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (= "=") (binary_expression "*pbVar12 | 4" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (| "|") (number_literal "4"))) (; ";")) (expression_statement "bVar15 = *pbVar12 == 0;" (assignment_expression "bVar15 = *pbVar12 == 0" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == 0" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (number_literal "0"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }" (else "else") (compound_statement "{\n    bVar15 = lVar9 == 0;\n    if (bVar15) goto LAB_0037f97a;\n  }" ({ "{") (expression_statement "bVar15 = lVar9 == 0;" (assignment_expression "bVar15 = lVar9 == 0" (identifier "bVar15") (= "=") (binary_expression "lVar9 == 0" (identifier "lVar9") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar15) goto LAB_0037f97a;" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (goto_statement "goto LAB_0037f97a;" (goto "goto") (statement_identifier "LAB_0037f97a") (; ";"))) (} "}")))) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" (identifier "bVar18") (= "=") (false "false")) (; ";")) (expression_statement "lVar10 = 5;" (assignment_expression "lVar10 = 5" (identifier "lVar10") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar12 = *(byte **)(lVar9 + 0x5b00);" (assignment_expression "pbVar12 = *(byte **)(lVar9 + 0x5b00)" (identifier "pbVar12") (= "=") (pointer_expression "*(byte **)(lVar9 + 0x5b00)" (* "*") (cast_expression "(byte **)(lVar9 + 0x5b00)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar9 + 0x5b00)" (( "(") (binary_expression "lVar9 + 0x5b00" (identifier "lVar9") (+ "+") (number_literal "0x5b00")) () ")"))))) (; ";")) (expression_statement "pbVar13 = (byte *)0x575186;" (assignment_expression "pbVar13 = (byte *)0x575186" (identifier "pbVar13") (= "=") (cast_expression "(byte *)0x575186" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x575186"))) (; ";")) (do_statement "do {\n    if (lVar10 == 0) break;\n    lVar10 = lVar10 + -1;\n    bVar18 = *pbVar12 < *pbVar13;\n    bVar15 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n  } while (bVar15);" (do "do") (compound_statement "{\n    if (lVar10 == 0) break;\n    lVar10 = lVar10 + -1;\n    bVar18 = *pbVar12 < *pbVar13;\n    bVar15 = *pbVar12 == *pbVar13;\n    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n  }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (if_statement "if ((!bVar18 && !bVar15) == bVar18) {\n    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;\n  }" (if "if") (parenthesized_expression "((!bVar18 && !bVar15) == bVar18)" (( "(") (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" (( "(") (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" (! "!") (identifier "bVar18")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar18")) () ")")) (compound_statement "{\n    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;\n  }" ({ "{") (expression_statement "*(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;" (assignment_expression "*(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8" (pointer_expression "*(byte *)((long)local_40[0] + 0xc9)" (* "*") (cast_expression "(byte *)((long)local_40[0] + 0xc9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_40[0] + 0xc9)" (( "(") (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (+ "+") (number_literal "0xc9")) () ")")))) (= "=") (binary_expression "*(byte *)((long)local_40[0] + 0xc9) | 8" (pointer_expression "*(byte *)((long)local_40[0] + 0xc9)" (* "*") (cast_expression "(byte *)((long)local_40[0] + 0xc9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_40[0] + 0xc9)" (( "(") (binary_expression "(long)local_40[0] + 0xc9" (cast_expression "(long)local_40[0]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (+ "+") (number_literal "0xc9")) () ")")))) (| "|") (number_literal "8"))) (; ";")) (} "}"))) (if_statement "if (param_3 == 3) {\n    bVar15 = false;\n    bVar18 = *(char *)(param_1 + 0x370) == '\0';\n    if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }\n  }\n  else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "(param_3 == 3)" (( "(") (binary_expression "param_3 == 3" (identifier "param_3") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n    bVar15 = false;\n    bVar18 = *(char *)(param_1 + 0x370) == '\0';\n    if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (expression_statement "bVar18 = *(char *)(param_1 + 0x370) == '\0';" (assignment_expression "bVar18 = *(char *)(param_1 + 0x370) == '\0'" (identifier "bVar18") (= "=") (binary_expression "*(char *)(param_1 + 0x370) == '\0'" (pointer_expression "*(char *)(param_1 + 0x370)" (* "*") (cast_expression "(char *)(param_1 + 0x370)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x370)" (( "(") (binary_expression "param_1 + 0x370" (identifier "param_1") (+ "+") (number_literal "0x370")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (if_statement "if (bVar18) {\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (compound_statement "{\n      lVar10 = 5;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".stab";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      uVar17 = 0;\n      uVar19 = (!bVar15 && !bVar18) == bVar15;\n      if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }\n    }" ({ "{") (expression_statement "lVar10 = 5;" (assignment_expression "lVar10 = 5" (identifier "lVar10") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".stab";" (assignment_expression "pbVar13 = (byte *)".stab"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".stab"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".stab"" (" """) (string_content ".stab") (" """)))) (; ";")) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);" (do "do") (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar19 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "uVar19 = (!bVar15 && !bVar18) == bVar15" (identifier "uVar19") (= "=") (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" (( "(") (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar15"))) (; ";")) (if_statement "if ((bool)uVar19) {\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }" (if "if") (parenthesized_expression "((bool)uVar19)" (( "(") (cast_expression "(bool)uVar19" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar19")) () ")")) (compound_statement "{\n        sVar7 = strlen((char *)param_2);\n        lVar10 = 4;\n        pbVar12 = param_2 + (sVar7 - 3);\n        pbVar13 = (byte *)0x579a2e;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);\n        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }\n      }" ({ "{") (expression_statement "sVar7 = strlen((char *)param_2);" (assignment_expression "sVar7 = strlen((char *)param_2)" (identifier "sVar7") (= "=") (call_expression "strlen((char *)param_2)" (identifier "strlen") (argument_list "((char *)param_2)" (( "(") (cast_expression "(char *)param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")) () ")")))) (; ";")) (expression_statement "lVar10 = 4;" (assignment_expression "lVar10 = 4" (identifier "lVar10") (= "=") (number_literal "4")) (; ";")) (expression_statement "pbVar12 = param_2 + (sVar7 - 3);" (assignment_expression "pbVar12 = param_2 + (sVar7 - 3)" (identifier "pbVar12") (= "=") (binary_expression "param_2 + (sVar7 - 3)" (identifier "param_2") (+ "+") (parenthesized_expression "(sVar7 - 3)" (( "(") (binary_expression "sVar7 - 3" (identifier "sVar7") (- "-") (number_literal "3")) () ")")))) (; ";")) (expression_statement "pbVar13 = (byte *)0x579a2e;" (assignment_expression "pbVar13 = (byte *)0x579a2e" (identifier "pbVar13") (= "=") (cast_expression "(byte *)0x579a2e" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x579a2e"))) (; ";")) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while ((bool)uVar19);" (do "do") (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          uVar17 = *pbVar12 < *pbVar13;\n          uVar19 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar17 = *pbVar12 < *pbVar13;" (assignment_expression "uVar17 = *pbVar12 < *pbVar13" (identifier "uVar17") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "uVar19 = *pbVar12 == *pbVar13;" (assignment_expression "uVar19 = *pbVar12 == *pbVar13" (identifier "uVar19") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((bool)uVar19)" (( "(") (cast_expression "(bool)uVar19" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar19")) () ")")) (; ";")) (if_statement "if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }" (if "if") (parenthesized_expression "((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17)" (( "(") (binary_expression "(!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17" (parenthesized_expression "(!(bool)uVar17 && !(bool)uVar19)" (( "(") (binary_expression "!(bool)uVar17 && !(bool)uVar19" (unary_expression "!(bool)uVar17" (! "!") (cast_expression "(bool)uVar17" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar17"))) (&& "&&") (unary_expression "!(bool)uVar19" (! "!") (cast_expression "(bool)uVar19" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar19")))) () ")")) (== "==") (cast_expression "(bool)uVar17" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar17"))) () ")")) (compound_statement "{\n          *(undefined1 *)(param_1 + 0x370) = 1;\n        }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0x370) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x370) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x370)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x370)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x370)" (( "(") (binary_expression "param_1 + 0x370" (identifier "param_1") (+ "+") (number_literal "0x370")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")) (else_clause "else if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }" (else "else") (if_statement "if ((param_3 == 1) || (param_3 == 8)) {\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "((param_3 == 1) || (param_3 == 8))" (( "(") (binary_expression "(param_3 == 1) || (param_3 == 8)" (parenthesized_expression "(param_3 == 1)" (( "(") (binary_expression "param_3 == 1" (identifier "param_3") (== "==") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "(param_3 == 8)" (( "(") (binary_expression "param_3 == 8" (identifier "param_3") (== "==") (number_literal "8")) () ")"))) () ")")) (compound_statement "{\n    bVar15 = uVar3 < 0x15;\n    bVar18 = uVar3 == 0x15;\n    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "bVar15 = uVar3 < 0x15;" (assignment_expression "bVar15 = uVar3 < 0x15" (identifier "bVar15") (= "=") (binary_expression "uVar3 < 0x15" (identifier "uVar3") (< "<") (number_literal "0x15"))) (; ";")) (expression_statement "bVar18 = uVar3 == 0x15;" (assignment_expression "bVar18 = uVar3 == 0x15" (identifier "bVar18") (= "=") (binary_expression "uVar3 == 0x15" (identifier "uVar3") (== "==") (number_literal "0x15"))) (; ";")) (if_statement "if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15))" (( "(") (binary_expression "(0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)" (parenthesized_expression "(0x15 < uVar3)" (( "(") (binary_expression "0x15 < uVar3" (number_literal "0x15") (< "<") (identifier "uVar3")) () ")")) (|| "||") (parenthesized_expression "(bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)" (( "(") (comma_expression "bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15" (assignment_expression "bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0" (identifier "bVar15") (= "=") (binary_expression "(0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0" (parenthesized_expression "(0x3020c2UL >> (uVar14 & 0x3f) & 1)" (( "(") (binary_expression "0x3020c2UL >> (uVar14 & 0x3f) & 1" (binary_expression "0x3020c2UL >> (uVar14 & 0x3f)" (number_literal "0x3020c2UL") (>> ">>") (parenthesized_expression "(uVar14 & 0x3f)" (( "(") (binary_expression "uVar14 & 0x3f" (identifier "uVar14") (& "&") (number_literal "0x3f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0"))) (, ",") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")"))) () ")")) (compound_statement "{\n      lVar10 = 10;\n      pbVar12 = param_2;\n      pbVar13 = (byte *)".eh_frame";\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);\n      bVar16 = false;\n      bVar15 = (!bVar15 && !bVar18) == bVar15;\n      if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "lVar10 = 10;" (assignment_expression "lVar10 = 10" (identifier "lVar10") (= "=") (number_literal "10")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".eh_frame";" (assignment_expression "pbVar13 = (byte *)".eh_frame"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".eh_frame"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".eh_frame"" (" """) (string_content ".eh_frame") (" """)))) (; ";")) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      } while (bVar18);" (do "do") (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar18 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n      }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" (identifier "bVar15") (= "=") (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" (( "(") (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar15"))) (; ";")) (if_statement "if (!bVar15) {\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(!bVar15)" (( "(") (unary_expression "!bVar15" (! "!") (identifier "bVar15")) () ")")) (compound_statement "{\n        lVar10 = 7;\n        pbVar12 = param_2;\n        pbVar13 = (byte *)".ctors";\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);\n        bVar18 = false;\n        bVar15 = (!bVar16 && !bVar15) == bVar16;\n        if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "lVar10 = 7;" (assignment_expression "lVar10 = 7" (identifier "lVar10") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".ctors";" (assignment_expression "pbVar13 = (byte *)".ctors"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".ctors"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".ctors"" (" """) (string_content ".ctors") (" """)))) (; ";")) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        } while (bVar15);" (do "do") (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar16 = *pbVar12 < *pbVar13;\n          bVar15 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n        }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" (identifier "bVar16") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" (identifier "bVar18") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (!bVar16 && !bVar15) == bVar16;" (assignment_expression "bVar15 = (!bVar16 && !bVar15) == bVar16" (identifier "bVar15") (= "=") (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" (( "(") (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar16"))) (; ";")) (if_statement "if (!bVar15) {\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }" (if "if") (parenthesized_expression "(!bVar15)" (( "(") (unary_expression "!bVar15" (! "!") (identifier "bVar15")) () ")")) (compound_statement "{\n          lVar10 = 7;\n          pbVar12 = param_2;\n          pbVar13 = (byte *)".dtors";\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);\n          bVar16 = false;\n          bVar15 = (!bVar18 && !bVar15) == bVar18;\n          if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }\n        }" ({ "{") (expression_statement "lVar10 = 7;" (assignment_expression "lVar10 = 7" (identifier "lVar10") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".dtors";" (assignment_expression "pbVar13 = (byte *)".dtors"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".dtors"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".dtors"" (" """) (string_content ".dtors") (" """)))) (; ";")) (do_statement "do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          } while (bVar15);" (do "do") (compound_statement "{\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar18 = *pbVar12 < *pbVar13;\n            bVar15 = *pbVar12 == *pbVar13;\n            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n          }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar18 = *pbVar12 < *pbVar13;" (assignment_expression "bVar18 = *pbVar12 < *pbVar13" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (!bVar18 && !bVar15) == bVar18;" (assignment_expression "bVar15 = (!bVar18 && !bVar15) == bVar18" (identifier "bVar15") (= "=") (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" (( "(") (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" (! "!") (identifier "bVar18")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar18"))) (; ";")) (if_statement "if (!bVar15) {\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }" (if "if") (parenthesized_expression "(!bVar15)" (( "(") (unary_expression "!bVar15" (! "!") (identifier "bVar15")) () ")")) (compound_statement "{\n            lVar10 = 5;\n            pbVar12 = param_2;\n            pbVar13 = &DAT_005710ea;\n            do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);\n            if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }\n          }" ({ "{") (expression_statement "lVar10 = 5;" (assignment_expression "lVar10 = 5" (identifier "lVar10") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = &DAT_005710ea;" (assignment_expression "pbVar13 = &DAT_005710ea" (identifier "pbVar13") (= "=") (pointer_expression "&DAT_005710ea" (& "&") (identifier "DAT_005710ea"))) (; ";")) (do_statement "do {\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            } while (bVar15);" (do "do") (compound_statement "{\n              if (lVar10 == 0) break;\n              lVar10 = lVar10 + -1;\n              bVar16 = *pbVar12 < *pbVar13;\n              bVar15 = *pbVar12 == *pbVar13;\n              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n            }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" (identifier "bVar16") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (if_statement "if ((!bVar16 && !bVar15) != bVar16) {\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }" (if "if") (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" (( "(") (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" (( "(") (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (!= "!=") (identifier "bVar16")) () ")")) (compound_statement "{\n              pbVar12 = (byte *)((long)local_40[0] + 0xca);\n              bVar15 = false;\n              *pbVar12 = *pbVar12 | 0x40;\n              bVar18 = *pbVar12 == 0;\n              lVar10 = 0xc;\n              pbVar12 = param_2;\n              pbVar13 = (byte *)".debug_info";\n              do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);\n              bVar16 = false;\n              bVar15 = (!bVar15 && !bVar18) == bVar15;\n              if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              puVar8[0x26] = puVar5;\n              uVar6 = FUN_003c86f0(puVar5);\n              puVar8[0x25] = uVar6;\n              puVar8 = local_40[0];\n            }" ({ "{") (expression_statement "pbVar12 = (byte *)((long)local_40[0] + 0xca);" (assignment_expression "pbVar12 = (byte *)((long)local_40[0] + 0xca)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)((long)local_40[0] + 0xca)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_40[0] + 0xca)" (( "(") (binary_expression "(long)local_40[0] + 0xca" (cast_expression "(long)local_40[0]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (+ "+") (number_literal "0xca")) () ")")))) (; ";")) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (expression_statement "*pbVar12 = *pbVar12 | 0x40;" (assignment_expression "*pbVar12 = *pbVar12 | 0x40" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (= "=") (binary_expression "*pbVar12 | 0x40" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (| "|") (number_literal "0x40"))) (; ";")) (expression_statement "bVar18 = *pbVar12 == 0;" (assignment_expression "bVar18 = *pbVar12 == 0" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 == 0" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (number_literal "0"))) (; ";")) (expression_statement "lVar10 = 0xc;" (assignment_expression "lVar10 = 0xc" (identifier "lVar10") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".debug_info";" (assignment_expression "pbVar13 = (byte *)".debug_info"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".debug_info"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".debug_info"" (" """) (string_content ".debug_info") (" """)))) (; ";")) (do_statement "do {\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              } while (bVar18);" (do "do") (compound_statement "{\n                if (lVar10 == 0) break;\n                lVar10 = lVar10 + -1;\n                bVar15 = *pbVar12 < *pbVar13;\n                bVar18 = *pbVar12 == *pbVar13;\n                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n              }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar18 = *pbVar12 == *pbVar13;" (assignment_expression "bVar18 = *pbVar12 == *pbVar13" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (!bVar15 && !bVar18) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar18) == bVar15" (identifier "bVar15") (= "=") (binary_expression "(!bVar15 && !bVar18) == bVar15" (parenthesized_expression "(!bVar15 && !bVar18)" (( "(") (binary_expression "!bVar15 && !bVar18" (unary_expression "!bVar15" (! "!") (identifier "bVar15")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar15"))) (; ";")) (if_statement "if (bVar15) {\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }\n              else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 0;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }" ({ "{") (expression_statement "puVar5 = (undefined8 *)FUN_0049cb70(0x10);" (assignment_expression "puVar5 = (undefined8 *)FUN_0049cb70(0x10)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)FUN_0049cb70(0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0049cb70(0x10)" (identifier "FUN_0049cb70") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "*puVar5 = &DAT_00672c10;" (assignment_expression "*puVar5 = &DAT_00672c10" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (pointer_expression "&DAT_00672c10" (& "&") (identifier "DAT_00672c10"))) (; ";")) (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x18" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }" ({ "{") (expression_statement "FUN_00352af0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x69,"target")" (identifier "FUN_00352af0") (argument_list "("../../gold/parameters.h",0x69,"target")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x69") (, ",") (string_literal ""target"" (" """) (string_content "target") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);" (assignment_expression "uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" (identifier "uVar17") (= "=") (pointer_expression "*(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" (* "*") (cast_expression "(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" (( "(") (binary_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" (* "*") (cast_expression "(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" (( "(") (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x18" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)((long)puVar5 + 9) = 0;" (assignment_expression "*(undefined1 *)((long)puVar5 + 9) = 0" (pointer_expression "*(undefined1 *)((long)puVar5 + 9)" (* "*") (cast_expression "(undefined1 *)((long)puVar5 + 9)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar5 + 9)" (( "(") (binary_expression "(long)puVar5 + 9" (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5")) (+ "+") (number_literal "9")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar5 + 1) = uVar17;" (assignment_expression "*(undefined1 *)(puVar5 + 1) = uVar17" (pointer_expression "*(undefined1 *)(puVar5 + 1)" (* "*") (cast_expression "(undefined1 *)(puVar5 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 1)" (( "(") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1")) () ")")))) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "*puVar5 = &PTR_FUN_00657840;" (assignment_expression "*puVar5 = &PTR_FUN_00657840" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (pointer_expression "&PTR_FUN_00657840" (& "&") (identifier "PTR_FUN_00657840"))) (; ";")) (} "}")) (else_clause "else {\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }" (else "else") (compound_statement "{\n                lVar10 = 0xd;\n                pbVar12 = param_2;\n                pbVar13 = (byte *)".debug_types";\n                do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);\n                bVar18 = false;\n                bVar15 = (!bVar16 && !bVar15) == bVar16;\n                if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }\n                puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                *puVar5 = &DAT_00672c10;\n                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }\n                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                *(undefined1 *)((long)puVar5 + 9) = 1;\n                *(undefined1 *)(puVar5 + 1) = uVar17;\n                *puVar5 = &PTR_FUN_00657840;\n              }" ({ "{") (expression_statement "lVar10 = 0xd;" (assignment_expression "lVar10 = 0xd" (identifier "lVar10") (= "=") (number_literal "0xd")) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar13 = (byte *)".debug_types";" (assignment_expression "pbVar13 = (byte *)".debug_types"" (identifier "pbVar13") (= "=") (cast_expression "(byte *)".debug_types"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".debug_types"" (" """) (string_content ".debug_types") (" """)))) (; ";")) (do_statement "do {\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                } while (bVar15);" (do "do") (compound_statement "{\n                  if (lVar10 == 0) break;\n                  lVar10 = lVar10 + -1;\n                  bVar16 = *pbVar12 < *pbVar13;\n                  bVar15 = *pbVar12 == *pbVar13;\n                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;\n                }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" (identifier "bVar16") (= "=") (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "bVar15 = *pbVar12 == *pbVar13;" (assignment_expression "bVar15 = *pbVar12 == *pbVar13" (identifier "bVar15") (= "=") (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar20 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" (identifier "bVar18") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = (!bVar16 && !bVar15) == bVar16;" (assignment_expression "bVar15 = (!bVar16 && !bVar15) == bVar16" (identifier "bVar15") (= "=") (binary_expression "(!bVar16 && !bVar15) == bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" (( "(") (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar16"))) (; ";")) (if_statement "if (!bVar15) {\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }" (if "if") (parenthesized_expression "(!bVar15)" (( "(") (unary_expression "!bVar15" (! "!") (identifier "bVar15")) () ")")) (compound_statement "{\n                  lVar10 = 0xc;\n                  pbVar12 = (byte *)".debug_line";\n                  do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);\n                  if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }\n                  goto LAB_0037f3c1;\n                }" ({ "{") (expression_statement "lVar10 = 0xc;" (assignment_expression "lVar10 = 0xc" (identifier "lVar10") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar12 = (byte *)".debug_line";" (assignment_expression "pbVar12 = (byte *)".debug_line"" (identifier "pbVar12") (= "=") (cast_expression "(byte *)".debug_line"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".debug_line"" (" """) (string_content ".debug_line") (" """)))) (; ";")) (do_statement "do {\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  } while (bVar15);" (do "do") (compound_statement "{\n                    if (lVar10 == 0) break;\n                    lVar10 = lVar10 + -1;\n                    bVar18 = *param_2 < *pbVar12;\n                    bVar15 = *param_2 == *pbVar12;\n                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;\n                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;\n                  }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar18 = *param_2 < *pbVar12;" (assignment_expression "bVar18 = *param_2 < *pbVar12" (identifier "bVar18") (= "=") (binary_expression "*param_2 < *pbVar12" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar15 = *param_2 == *pbVar12;" (assignment_expression "bVar15 = *param_2 == *pbVar12" (identifier "bVar15") (= "=") (binary_expression "*param_2 == *pbVar12" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "param_2 = param_2 + (ulong)bVar20 * -2 + 1;" (assignment_expression "param_2 = param_2 + (ulong)bVar20 * -2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + (ulong)bVar20 * -2 + 1" (binary_expression "param_2 + (ulong)bVar20 * -2" (identifier "param_2") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar20 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar20 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (if_statement "if ((!bVar18 && !bVar15) == bVar18) {\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }" (if "if") (parenthesized_expression "((!bVar18 && !bVar15) == bVar18)" (( "(") (binary_expression "(!bVar18 && !bVar15) == bVar18" (parenthesized_expression "(!bVar18 && !bVar15)" (( "(") (binary_expression "!bVar18 && !bVar15" (unary_expression "!bVar18" (! "!") (identifier "bVar18")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar18")) () ")")) (compound_statement "{\n                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);\n                    *puVar5 = &DAT_00672c10;\n                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }\n                    *(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);\n                    *puVar5 = &PTR_FUN_00657870;\n                    puVar8[0x26] = puVar5;\n                    uVar6 = FUN_003c8700(puVar5);\n                    puVar8[0x25] = uVar6;\n                    puVar8 = local_40[0];\n                  }" ({ "{") (expression_statement "puVar5 = (undefined8 *)FUN_0049cb70(0x10);" (assignment_expression "puVar5 = (undefined8 *)FUN_0049cb70(0x10)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)FUN_0049cb70(0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0049cb70(0x10)" (identifier "FUN_0049cb70") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "*puVar5 = &DAT_00672c10;" (assignment_expression "*puVar5 = &DAT_00672c10" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (pointer_expression "&DAT_00672c10" (& "&") (identifier "DAT_00672c10"))) (; ";")) (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x18" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                    \n                      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                    }" ({ "{") (expression_statement "FUN_00352af0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x69,"target")" (identifier "FUN_00352af0") (argument_list "("../../gold/parameters.h",0x69,"target")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x69") (, ",") (string_literal ""target"" (" """) (string_content "target") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);" (assignment_expression "*(undefined1 *)(puVar5 + 1) =\n                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" (pointer_expression "*(undefined1 *)(puVar5 + 1)" (* "*") (cast_expression "(undefined1 *)(puVar5 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 1)" (( "(") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" (* "*") (cast_expression "(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" (( "(") (binary_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" (* "*") (cast_expression "(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" (( "(") (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x18" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*puVar5 = &PTR_FUN_00657870;" (assignment_expression "*puVar5 = &PTR_FUN_00657870" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (pointer_expression "&PTR_FUN_00657870" (& "&") (identifier "PTR_FUN_00657870"))) (; ";")) (expression_statement "puVar8[0x26] = puVar5;" (assignment_expression "puVar8[0x26] = puVar5" (subscript_expression "puVar8[0x26]" (identifier "puVar8") ([ "[") (number_literal "0x26") (] "]")) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "uVar6 = FUN_003c8700(puVar5);" (assignment_expression "uVar6 = FUN_003c8700(puVar5)" (identifier "uVar6") (= "=") (call_expression "FUN_003c8700(puVar5)" (identifier "FUN_003c8700") (argument_list "(puVar5)" (( "(") (identifier "puVar5") () ")")))) (; ";")) (expression_statement "puVar8[0x25] = uVar6;" (assignment_expression "puVar8[0x25] = uVar6" (subscript_expression "puVar8[0x25]" (identifier "puVar8") ([ "[") (number_literal "0x25") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" (identifier "puVar8") (= "=") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0037f3c1;" (goto "goto") (statement_identifier "LAB_0037f3c1") (; ";")) (} "}"))) (expression_statement "puVar5 = (undefined8 *)FUN_0049cb70(0x10);" (assignment_expression "puVar5 = (undefined8 *)FUN_0049cb70(0x10)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)FUN_0049cb70(0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0049cb70(0x10)" (identifier "FUN_0049cb70") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "*puVar5 = &DAT_00672c10;" (assignment_expression "*puVar5 = &DAT_00672c10" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (pointer_expression "&DAT_00672c10" (& "&") (identifier "DAT_00672c10"))) (; ";")) (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x18" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                    \n                  FUN_00352af0("../../gold/parameters.h",0x69,"target");\n                }" ({ "{") (expression_statement "FUN_00352af0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x69,"target")" (identifier "FUN_00352af0") (argument_list "("../../gold/parameters.h",0x69,"target")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x69") (, ",") (string_literal ""target"" (" """) (string_content "target") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);" (assignment_expression "uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" (identifier "uVar17") (= "=") (pointer_expression "*(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" (* "*") (cast_expression "(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4)" (( "(") (binary_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" (* "*") (cast_expression "(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8)" (( "(") (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x18" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)((long)puVar5 + 9) = 1;" (assignment_expression "*(undefined1 *)((long)puVar5 + 9) = 1" (pointer_expression "*(undefined1 *)((long)puVar5 + 9)" (* "*") (cast_expression "(undefined1 *)((long)puVar5 + 9)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar5 + 9)" (( "(") (binary_expression "(long)puVar5 + 9" (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5")) (+ "+") (number_literal "9")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined1 *)(puVar5 + 1) = uVar17;" (assignment_expression "*(undefined1 *)(puVar5 + 1) = uVar17" (pointer_expression "*(undefined1 *)(puVar5 + 1)" (* "*") (cast_expression "(undefined1 *)(puVar5 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 1)" (( "(") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1")) () ")")))) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "*puVar5 = &PTR_FUN_00657840;" (assignment_expression "*puVar5 = &PTR_FUN_00657840" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (pointer_expression "&PTR_FUN_00657840" (& "&") (identifier "PTR_FUN_00657840"))) (; ";")) (} "}")))) (expression_statement "puVar8[0x26] = puVar5;" (assignment_expression "puVar8[0x26] = puVar5" (subscript_expression "puVar8[0x26]" (identifier "puVar8") ([ "[") (number_literal "0x26") (] "]")) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "uVar6 = FUN_003c86f0(puVar5);" (assignment_expression "uVar6 = FUN_003c86f0(puVar5)" (identifier "uVar6") (= "=") (call_expression "FUN_003c86f0(puVar5)" (identifier "FUN_003c86f0") (argument_list "(puVar5)" (( "(") (identifier "puVar5") () ")")))) (; ";")) (expression_statement "puVar8[0x25] = uVar6;" (assignment_expression "puVar8[0x25] = uVar6" (subscript_expression "puVar8[0x25]" (identifier "puVar8") ([ "[") (number_literal "0x25") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" (identifier "puVar8") (= "=") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (} "}"))))) (labeled_statement "LAB_0037f3c1:\n  if (*(char *)(param_1 + 0x369) != '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }" (statement_identifier "LAB_0037f3c1") (: ":") (if_statement "if (*(char *)(param_1 + 0x369) != '\0') {\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x369) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x369) != '\0'" (pointer_expression "*(char *)(param_1 + 0x369)" (* "*") (cast_expression "(char *)(param_1 + 0x369)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x369)" (( "(") (binary_expression "param_1 + 0x369" (identifier "param_1") (+ "+") (number_literal "0x369")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }\n    FUN_0037f0b0(param_1);\n    puVar8 = local_40[0];\n  }" ({ "{") (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x18) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x18)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x18" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");\n    }" ({ "{") (labeled_statement "LAB_0037fb03:\n                    \n      FUN_00352af0("../../gold/parameters.h",0x69,"target");" (statement_identifier "LAB_0037fb03") (: ":") (expression_statement "FUN_00352af0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x69,"target")" (identifier "FUN_00352af0") (argument_list "("../../gold/parameters.h",0x69,"target")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x69") (, ",") (string_literal ""target"" (" """) (string_content "target") (" """)) () ")"))) (; ";"))) (} "}"))) (expression_statement "FUN_0037f0b0(param_1);" (call_expression "FUN_0037f0b0(param_1)" (identifier "FUN_0037f0b0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "puVar8 = local_40[0];" (assignment_expression "puVar8 = local_40[0]" (identifier "puVar8") (= "=") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}")))) (return_statement "return puVar8;" (return "return") (identifier "puVar8") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* WARNING: Struct "Output_fill_debug_info": ignoring overlapping field "is_debug_types_" */
/* DWARF original prototype: Output_section * make_output_section(Layout * this, char * name,
   Elf_Word type, Elf_Xword flags, Output_section_order order, bool is_relro) */

type_10 * __thiscall
var_24::Layout::make_output_section
          (Layout *this,char *var_29,Elf_Word var_7,Elf_Xword var_1,type_7 var_21,
          bool is_relro)

{
  type_1 *puVar1;
  type_2 *p_Var2;
  type_3 *var_2;
  type_4 *var_10;
  type_5 *pSVar5;
  type_6 *pPVar6;
  int var_20;
  type_7 var_31;
  type_8 extraout_var;
  type_9 *pOVar9;
  size_t sVar10;
  size_t var_30;
  type_10 *pOVar12;
  type_11 *var_17;
  type_12 *var_16;
  long var_3;
  type_13 *var_4;
  type_14 __position;
  type_13 *var_5;
  type_15 var_33;
  bool var_6;
  bool var_8;
  type_1 uVar21;
  bool var_9;
  type_1 uVar23;
  type_13 bVar24;
  bool var_18;
  type_10 *os;
  
  bVar24 = 0;
  var_33 = (type_15)var_21;
  if ((var_1 & 2) != 0) goto LAB_0037f230;
  var_2 = parameters->options_;
  var_6 = false;
  var_9 = var_2 == (type_3 *)0x0;
  if (var_9) goto LAB_0037f97a;
  var_3 = 5;
  var_4 = (type_13 *)(var_2->compress_debug_sections_).value;
  var_5 = (type_13 *)0x57596e;
  do {
    if (var_3 == 0) break;
    var_3 = var_3 + -1;
    var_6 = *var_4 < *var_5;
    var_9 = *var_4 == *var_5;
    var_4 = var_4 + 1;
    var_5 = var_5 + 1;
  } while (var_9);
  var_8 = false;
  var_6 = (!var_6 && !var_9) == var_6;
  if (var_6) {
LAB_0037f1e5:
    var_6 = false;
    var_9 = (var_2->strip_debug_non_line_).value == false;
    if (var_9) {
LAB_0037f230:
      var_6 = var_7 == 0;
      var_9 = var_7 == 1;
      if (var_9) {
        var_3 = 0xb;
        var_4 = (type_13 *)".init_array";
        var_5 = (type_13 *)var_29;
        do {
          if (var_3 == 0) break;
          var_3 = var_3 + -1;
          var_6 = *var_4 < *var_5;
          var_9 = *var_4 == *var_5;
          var_4 = var_4 + 1;
          var_5 = var_5 + 1;
        } while (var_9);
        var_8 = false;
        var_6 = (!var_6 && !var_9) == var_6;
        if (var_6) {
          var_7 = 0xe;
        }
        else {
          var_3 = 0xe;
          var_4 = (type_13 *)".preinit_array";
          var_5 = (type_13 *)var_29;
          do {
            if (var_3 == 0) break;
            var_3 = var_3 + -1;
            var_8 = *var_4 < *var_5;
            var_6 = *var_4 == *var_5;
            var_4 = var_4 + 1;
            var_5 = var_5 + 1;
          } while (var_6);
          var_9 = false;
          var_6 = (!var_8 && !var_6) == var_8;
          if (var_6) {
            var_7 = 0x10;
          }
          else {
            var_3 = 0xb;
            var_4 = (type_13 *)".fini_array";
            var_5 = (type_13 *)var_29;
            do {
              if (var_3 == 0) break;
              var_3 = var_3 + -1;
              var_9 = *var_4 < *var_5;
              var_6 = *var_4 == *var_5;
              var_4 = var_4 + 1;
              var_5 = var_5 + 1;
            } while (var_6);
            if ((!var_9 && !var_6) == var_9) {
              var_7 = 0xf;
            }
          }
        }
      }
      var_10 = parameters->target_;
      if (var_10 == (type_4 *)0x0) goto LAB_0037fb03;
      var_20 = (*var_10->_vptr_Target[0x1b])(var_10,var_29,(type_15)var_7,var_1);
      os = (type_10 *)var_11(extraout_var,var_20);
    }
    else {
      var_3 = 0xe;
      var_4 = (type_13 *)".debug_abbrev";
      var_5 = (type_13 *)var_29;
      do {
        if (var_3 == 0) break;
        var_3 = var_3 + -1;
        var_6 = *var_4 < *var_5;
        var_9 = *var_4 == *var_5;
        var_4 = var_4 + 1;
        var_5 = var_5 + 1;
      } while (var_9);
      var_8 = false;
      var_6 = (!var_6 && !var_9) == var_6;
      if (var_6) {
        var_17 = (type_11 *)var_12(0x1a0);
                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */
        Output_section::type_10((type_10 *)var_17,var_29,var_7,var_1);
        (var_17->super_Output_section).super_Output_data._vptr_Output_data =
             (type_16 **)&PTR__Output_reduced_debug_abbrev_section_006752b8;
        p_Var2 = &(var_17->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header;
        (var_17->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left =
             &p_Var2->_M_header;
        (var_17->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_right =
             &p_Var2->_M_header;
        var_16 = this->debug_info_;
        (var_17->data_).super__Vector_base<var_14,var_25::var_13<var_14>var_15>._M_impl.
        _M_start = (type_17)0x0;
        (var_17->data_).super__Vector_base<var_14,var_25::var_13<var_14>var_15>._M_impl.
        _M_finish = (type_17)0x0;
        (var_17->data_).super__Vector_base<var_14,var_25::var_13<var_14>var_15>._M_impl.
        _M_end_of_storage = (type_17)0x0;
        (var_17->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_color = _S_red;
        (var_17->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent =
             (type_18)0x0;
        (var_17->abbrev_mapping_)._M_t._M_impl.super__Rb_tree_header._M_node_count = 0;
        var_17->sized_ = false;
        var_17->abbrev_count_ = 0;
        var_17->failed_ = false;
        puVar1 = &(var_17->super_Output_section).field_0xc8;
        *puVar1 = *puVar1 | 0x30;
        this->debug_abbrev_ = var_17;
        os = (type_10 *)var_17;
        if (var_16 != (type_12 *)0x0) {
          var_16->associated_abbrev_ = var_17;
        }
      }
      else {
        var_3 = 0xc;
        var_4 = (type_13 *)".debug_info";
        var_5 = (type_13 *)var_29;
        do {
          if (var_3 == 0) break;
          var_3 = var_3 + -1;
          var_8 = *var_4 < *var_5;
          var_6 = *var_4 == *var_5;
          var_4 = var_4 + 1;
          var_5 = var_5 + 1;
        } while (var_6);
        if ((!var_8 && !var_6) != var_8) goto LAB_0037f230;
        var_16 = (type_12 *)var_12(0x170);
                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */
        Output_section::type_10((type_10 *)var_16,var_29,var_7,var_1);
        (var_16->super_Output_section).super_Output_data._vptr_Output_data =
             (type_16 **)&PTR__Output_reduced_debug_info_section_00675370;
        var_17 = this->debug_abbrev_;
        (var_16->data_).super__Vector_base<var_14,var_25::var_13<var_14>var_15>._M_impl.
        _M_start = (type_17)0x0;
        (var_16->data_).super__Vector_base<var_14,var_25::var_13<var_14>var_15>._M_impl.
        _M_finish = (type_17)0x0;
        (var_16->data_).super__Vector_base<var_14,var_25::var_13<var_14>var_15>._M_impl.
        _M_end_of_storage = (type_17)0x0;
        var_16->failed_ = false;
        puVar1 = &(var_16->super_Output_section).field_0xc8;
        *puVar1 = *puVar1 | 0x30;
        this->debug_info_ = var_16;
        os = (type_10 *)var_16;
        if (var_17 != (type_11 *)0x0) {
          var_16->associated_abbrev_ = var_17;
        }
      }
    }
  }
  else {
    var_3 = 6;
    var_4 = &DAT_00533552;
    var_5 = (type_13 *)var_29;
    do {
      if (var_3 == 0) break;
      var_3 = var_3 + -1;
      var_8 = *var_4 < *var_5;
      var_6 = *var_4 == *var_5;
      var_4 = var_4 + 1;
      var_5 = var_5 + 1;
    } while (var_6);
    if ((!var_8 && !var_6) != var_8) goto LAB_0037f1e5;
    pOVar12 = (type_10 *)var_12(0x178);
                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */
    Output_section::type_10(pOVar12,var_29,var_7,var_1);
    (pOVar12->super_Output_data)._vptr_Output_data =
         (type_16 **)&PTR__Output_compressed_section_00675900;
    pOVar12[1].super_Output_data._vptr_Output_data = (type_16 **)var_2;
    pOVar12[1].super_Output_data.data_size_ = (off_t)&pOVar12[1].super_Output_data.field_0x20;
    pOVar12[1].super_Output_data.offset_ = 0;
    pOVar12[1].super_Output_data.field_0x20 = 0;
    pOVar12->field_0xc8 = pOVar12->field_0xc8 | 0x30;
    os = pOVar12;
  }
  pOVar12 = os;
  if ((this->script_options_->script_sections_).saw_sections_clause_ == false) {
    if (parameters->options_ == (type_3 *)0x0) goto LAB_0037f97a;
    var_18 = (parameters->options_->relro_).value;
    if ((var_18 == false) || (((type_19)var_1 & 3) != 3)) goto LAB_0037f273;
    if (var_7 == 1) {
      var_6 = false;
      var_9 = (var_1 & 0x400) == 0;
      if (!var_9) goto LAB_0037f278;
      var_3 = 0xd;
      var_4 = (type_13 *)var_29;
      var_5 = (type_13 *)".data.rel.ro";
      do {
        if (var_3 == 0) break;
        var_3 = var_3 + -1;
        var_6 = *var_4 < *var_5;
        var_9 = *var_4 == *var_5;
        var_4 = var_4 + (type_15)bVar24 * -2 + 1;
        var_5 = var_5 + (type_15)bVar24 * -2 + 1;
      } while (var_9);
      var_8 = false;
      var_6 = (!var_6 && !var_9) == var_6;
      if (var_6) goto LAB_0037f278;
      var_3 = 0x13;
      var_4 = (type_13 *)var_29;
      var_5 = (type_13 *)".data.rel.ro.local";
      do {
        if (var_3 == 0) break;
        var_3 = var_3 + -1;
        var_8 = *var_4 < *var_5;
        var_6 = *var_4 == *var_5;
        var_4 = var_4 + (type_15)bVar24 * -2 + 1;
        var_5 = var_5 + (type_15)bVar24 * -2 + 1;
      } while (var_6);
      var_9 = false;
      var_6 = (!var_8 && !var_6) == var_8;
      if (!var_6) {
        var_3 = 7;
        var_4 = (type_13 *)var_29;
        var_5 = (type_13 *)".ctors";
        do {
          if (var_3 == 0) break;
          var_3 = var_3 + -1;
          var_9 = *var_4 < *var_5;
          var_6 = *var_4 == *var_5;
          var_4 = var_4 + (type_15)bVar24 * -2 + 1;
          var_5 = var_5 + (type_15)bVar24 * -2 + 1;
        } while (var_6);
        var_8 = false;
        var_6 = (!var_9 && !var_6) == var_9;
        if (!var_6) {
          var_3 = 7;
          var_4 = (type_13 *)var_29;
          var_5 = (type_13 *)".dtors";
          do {
            if (var_3 == 0) break;
            var_3 = var_3 + -1;
            var_8 = *var_4 < *var_5;
            var_6 = *var_4 == *var_5;
            var_4 = var_4 + (type_15)bVar24 * -2 + 1;
            var_5 = var_5 + (type_15)bVar24 * -2 + 1;
          } while (var_6);
          if (((!var_8 && !var_6) != var_8) && (var_20 = var_19(var_29,".jcr"), var_20 != 0))
          goto LAB_0037f273;
        }
        goto LAB_0037f278;
      }
    }
    else {
      if (2 < var_7 - 0xe) goto LAB_0037f273;
LAB_0037f278:
      var_18 = false;
    }
    pOVar12->field_0xc9 = pOVar12->field_0xc9 | 0x20;
  }
  else {
LAB_0037f273:
    var_18 = is_relro;
    if (is_relro) goto LAB_0037f278;
  }
  if ((var_21 == var_22) && ((var_1 & 2) != 0)) {
    var_31 = var_23(this,pOVar12,var_18);
    var_33 = (type_15)var_31;
    pOVar12 = os;
  }
  pPVar6 = parameters;
  var_31 = (type_7)var_33;
  pOVar12->order_ = var_31;
  var_10 = pPVar6->target_;
  if (var_10 == (type_4 *)0x0) goto LAB_0037fb03;
  if (var_10->_vptr_Target[3] == type_4::do_new_output_section) {
    __position._M_current =
         (this->section_list_).
         super__Vector_base<var_24::type_10*,var_25::var_13<var_24::type_10*>var_15>._M_impl.
         _M_finish;
    if (__position._M_current ==
        (this->section_list_).
        super__Vector_base<var_24::type_10*,var_25::var_13<var_24::type_10*>var_15>._M_impl.
        _M_end_of_storage) goto LAB_0037f938;
LAB_0037f2d9:
    *__position._M_current = os;
    (this->section_list_).
    super__Vector_base<var_24::type_10*,var_25::var_13<var_24::type_10*>var_15>._M_impl.
    _M_finish = __position._M_current + 1;
  }
  else {
    (*var_10->_vptr_Target[3])(var_10,pOVar12);
    __position._M_current =
         (this->section_list_).
         super__Vector_base<var_24::type_10*,var_25::var_13<var_24::type_10*>var_15>._M_impl.
         _M_finish;
    if (__position._M_current !=
        (this->section_list_).
        super__Vector_base<var_24::type_10*,var_25::var_13<var_24::type_10*>var_15>._M_impl.
        _M_end_of_storage) goto LAB_0037f2d9;
LAB_0037f938:
    std::vector<var_24::type_10*,var_25::var_13<var_24::type_10*>var_15>::
    _M_realloc_insert<var_24::type_10*var_26&>(&this->section_list_,__position,&os);
  }
  pOVar12 = os;
  pSVar5 = this->script_options_;
  var_2 = parameters->options_;
  if ((pSVar5->script_sections_).saw_sections_clause_ == false) {
    if (var_2 == (type_3 *)0x0) {
LAB_0037f97a:
                    /* WARNING: Subroutine does not return */
      var_27("../../gold/parameters.h",0x5c,"options");
    }
    var_6 = false;
    var_9 = (var_2->relocatable_).value == false;
    if (!var_9) goto LAB_0037f347;
    var_3 = 0xc;
    var_4 = (type_13 *)var_29;
    var_5 = (type_13 *)".init_array";
    do {
      if (var_3 == 0) break;
      var_3 = var_3 + -1;
      var_6 = *var_4 < *var_5;
      var_9 = *var_4 == *var_5;
      var_4 = var_4 + (type_15)bVar24 * -2 + 1;
      var_5 = var_5 + (type_15)bVar24 * -2 + 1;
    } while (var_9);
    var_8 = false;
    var_6 = (!var_6 && !var_9) == var_6;
    if (var_6) {
LAB_0037f340:
      os->field_0xc9 = os->field_0xc9 | 4;
    }
    else {
      var_3 = 0xc;
      var_4 = (type_13 *)var_29;
      var_5 = (type_13 *)".fini_array";
      do {
        if (var_3 == 0) break;
        var_3 = var_3 + -1;
        var_8 = *var_4 < *var_5;
        var_6 = *var_4 == *var_5;
        var_4 = var_4 + (type_15)bVar24 * -2 + 1;
        var_5 = var_5 + (type_15)bVar24 * -2 + 1;
      } while (var_6);
      if ((!var_8 && !var_6) == var_8) goto LAB_0037f340;
      var_6 = false;
      var_9 = (var_2->ctors_in_init_array_).value == false;
      if (var_9) {
        var_3 = 7;
        var_4 = (type_13 *)var_29;
        var_5 = (type_13 *)".ctors";
        do {
          if (var_3 == 0) break;
          var_3 = var_3 + -1;
          var_6 = *var_4 < *var_5;
          var_9 = *var_4 == *var_5;
          var_4 = var_4 + (type_15)bVar24 * -2 + 1;
          var_5 = var_5 + (type_15)bVar24 * -2 + 1;
        } while (var_9);
        var_8 = false;
        var_6 = (!var_6 && !var_9) == var_6;
        if (!var_6) {
          var_3 = 7;
          var_4 = (type_13 *)var_29;
          var_5 = (type_13 *)".dtors";
          do {
            if (var_3 == 0) break;
            var_3 = var_3 + -1;
            var_8 = *var_4 < *var_5;
            var_6 = *var_4 == *var_5;
            var_4 = var_4 + (type_15)bVar24 * -2 + 1;
            var_5 = var_5 + (type_15)bVar24 * -2 + 1;
          } while (var_6);
          if ((!var_8 && !var_6) != var_8) goto LAB_0037f347;
        }
        goto LAB_0037f340;
      }
    }
LAB_0037f347:
    var_6 = (var_2->text_reorder_).value == false;
    if (((!var_6) && (var_6 = (pSVar5->script_sections_).saw_sections_clause_ == false, var_6))
       && (var_6 = this->section_ordering_specified_ == false, var_6)) {
      var_9 = false;
      var_6 = (var_2->relocatable_).value == false;
      if (var_6) {
        var_3 = 6;
        var_4 = (type_13 *)var_29;
        var_5 = (type_13 *)".text";
        do {
          if (var_3 == 0) break;
          var_3 = var_3 + -1;
          var_9 = *var_4 < *var_5;
          var_6 = *var_4 == *var_5;
          var_4 = var_4 + (type_15)bVar24 * -2 + 1;
          var_5 = var_5 + (type_15)bVar24 * -2 + 1;
        } while (var_6);
        var_6 = (!var_9 && !var_6) == var_9;
        if (var_6) {
          puVar1 = &os->field_0xc9;
          *puVar1 = *puVar1 | 4;
          var_6 = *puVar1 == '\0';
        }
      }
    }
  }
  else {
    var_6 = var_2 == (type_3 *)0x0;
    if (var_6) goto LAB_0037f97a;
  }
  var_9 = false;
  var_3 = 5;
  var_4 = (type_13 *)(var_2->sort_section_).value;
  var_5 = (type_13 *)0x575186;
  do {
    if (var_3 == 0) break;
    var_3 = var_3 + -1;
    var_9 = *var_4 < *var_5;
    var_6 = *var_4 == *var_5;
    var_4 = var_4 + (type_15)bVar24 * -2 + 1;
    var_5 = var_5 + (type_15)bVar24 * -2 + 1;
  } while (var_6);
  if ((!var_9 && !var_6) == var_9) {
    os->field_0xc9 = os->field_0xc9 | 8;
  }
  if (var_7 == 3) {
    var_6 = false;
    var_9 = this->have_stabstr_section_ == false;
    if (var_9) {
      var_3 = 5;
      var_4 = (type_13 *)var_29;
      var_5 = (type_13 *)".stab";
      do {
        if (var_3 == 0) break;
        var_3 = var_3 + -1;
        var_6 = *var_4 < *var_5;
        var_9 = *var_4 == *var_5;
        var_4 = var_4 + (type_15)bVar24 * -2 + 1;
        var_5 = var_5 + (type_15)bVar24 * -2 + 1;
      } while (var_9);
      uVar21 = 0;
      uVar23 = (!var_6 && !var_9) == var_6;
      if ((bool)uVar23) {
        var_30 = var_28(var_29);
        var_3 = 4;
        var_4 = (type_13 *)(var_29 + (var_30 - 3));
        var_5 = (type_13 *)0x579a2e;
        do {
          if (var_3 == 0) break;
          var_3 = var_3 + -1;
          uVar21 = *var_4 < *var_5;
          uVar23 = *var_4 == *var_5;
          var_4 = var_4 + (type_15)bVar24 * -2 + 1;
          var_5 = var_5 + (type_15)bVar24 * -2 + 1;
        } while ((bool)uVar23);
        if ((!(bool)uVar21 && !(bool)uVar23) == (bool)uVar21) {
          this->have_stabstr_section_ = true;
        }
      }
    }
  }
  else if ((var_7 == 1) || (var_7 == 8)) {
    var_6 = var_31 < var_32;
    var_9 = var_31 == var_32;
    if ((var_32 < var_31) ||
       (var_6 = (0x3020c2UL >> (var_33 & 0x3f) & 1) != 0, !var_6)) {
      var_3 = 10;
      var_4 = (type_13 *)var_29;
      var_5 = (type_13 *)".eh_frame";
      do {
        if (var_3 == 0) break;
        var_3 = var_3 + -1;
        var_6 = *var_4 < *var_5;
        var_9 = *var_4 == *var_5;
        var_4 = var_4 + (type_15)bVar24 * -2 + 1;
        var_5 = var_5 + (type_15)bVar24 * -2 + 1;
      } while (var_9);
      var_8 = false;
      var_6 = (!var_6 && !var_9) == var_6;
      if (!var_6) {
        var_3 = 7;
        var_4 = (type_13 *)var_29;
        var_5 = (type_13 *)".ctors";
        do {
          if (var_3 == 0) break;
          var_3 = var_3 + -1;
          var_8 = *var_4 < *var_5;
          var_6 = *var_4 == *var_5;
          var_4 = var_4 + (type_15)bVar24 * -2 + 1;
          var_5 = var_5 + (type_15)bVar24 * -2 + 1;
        } while (var_6);
        var_9 = false;
        var_6 = (!var_8 && !var_6) == var_8;
        if (!var_6) {
          var_3 = 7;
          var_4 = (type_13 *)var_29;
          var_5 = (type_13 *)".dtors";
          do {
            if (var_3 == 0) break;
            var_3 = var_3 + -1;
            var_9 = *var_4 < *var_5;
            var_6 = *var_4 == *var_5;
            var_4 = var_4 + (type_15)bVar24 * -2 + 1;
            var_5 = var_5 + (type_15)bVar24 * -2 + 1;
          } while (var_6);
          var_8 = false;
          var_6 = (!var_9 && !var_6) == var_9;
          if (!var_6) {
            var_3 = 5;
            var_4 = (type_13 *)var_29;
            var_5 = &DAT_005710ea;
            do {
              if (var_3 == 0) break;
              var_3 = var_3 + -1;
              var_8 = *var_4 < *var_5;
              var_6 = *var_4 == *var_5;
              var_4 = var_4 + (type_15)bVar24 * -2 + 1;
              var_5 = var_5 + (type_15)bVar24 * -2 + 1;
            } while (var_6);
            if ((!var_8 && !var_6) != var_8) {
              puVar1 = &os->field_0xca;
              var_6 = false;
              *puVar1 = *puVar1 | 0x40;
              var_9 = *puVar1 == '\0';
              var_3 = 0xc;
              var_4 = (type_13 *)var_29;
              var_5 = (type_13 *)".debug_info";
              do {
                if (var_3 == 0) break;
                var_3 = var_3 + -1;
                var_6 = *var_4 < *var_5;
                var_9 = *var_4 == *var_5;
                var_4 = var_4 + (type_15)bVar24 * -2 + 1;
                var_5 = var_5 + (type_15)bVar24 * -2 + 1;
              } while (var_9);
              var_8 = false;
              var_6 = (!var_6 && !var_9) == var_6;
              if (var_6) {
                pOVar9 = (type_9 *)var_12(0x10);
                ((type_9 *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (type_16 **)&DAT_00672c10;
                if (parameters->target_ == (type_4 *)0x0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */
                  var_27("../../gold/parameters.h",0x69,"target");
                }
                var_6 = parameters->target_->pti_->is_big_endian;
                pOVar9->field_0x9 = 0;
                pOVar9->is_big_endian_ = var_6;
                ((type_9 *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (type_16 **)&PTR__Output_fill_debug_info_00657840;
              }
              else {
                var_3 = 0xd;
                var_4 = (type_13 *)var_29;
                var_5 = (type_13 *)".debug_types";
                do {
                  if (var_3 == 0) break;
                  var_3 = var_3 + -1;
                  var_8 = *var_4 < *var_5;
                  var_6 = *var_4 == *var_5;
                  var_4 = var_4 + (type_15)bVar24 * -2 + 1;
                  var_5 = var_5 + (type_15)bVar24 * -2 + 1;
                } while (var_6);
                var_9 = false;
                var_6 = (!var_8 && !var_6) == var_8;
                if (!var_6) {
                  var_3 = 0xc;
                  var_4 = (type_13 *)".debug_line";
                  do {
                    if (var_3 == 0) break;
                    var_3 = var_3 + -1;
                    var_9 = (type_13)*var_29 < *var_4;
                    var_6 = *var_29 == *var_4;
                    var_29 = (char *)((type_13 *)var_29 + (type_15)bVar24 * -2 + 1);
                    var_4 = var_4 + (type_15)bVar24 * -2 + 1;
                  } while (var_6);
                  if ((!var_9 && !var_6) == var_9) {
                    pOVar9 = (type_9 *)var_12(0x10);
                    ((type_9 *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                         (type_16 **)&DAT_00672c10;
                    if (parameters->target_ == (type_4 *)0x0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */
                      var_27("../../gold/parameters.h",0x69,"target");
                    }
                    pOVar9->is_big_endian_ = parameters->target_->pti_->is_big_endian;
                    ((type_9 *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                         (type_16 **)&PTR__Output_fill_debug_line_00657870;
                    pOVar12->free_space_fill_ = pOVar9;
                    sVar10 = type_20::var_34
                                       ((type_20 *)pOVar9);
                    (pOVar12->free_list_).min_hole_ = sVar10;
                    pOVar12 = os;
                  }
                  goto LAB_0037f3c1;
                }
                pOVar9 = (type_9 *)var_12(0x10);
                ((type_9 *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (type_16 **)&DAT_00672c10;
                if (parameters->target_ == (type_4 *)0x0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */
                  var_27("../../gold/parameters.h",0x69,"target");
                }
                var_6 = parameters->target_->pti_->is_big_endian;
                pOVar9->field_0x9 = 1;
                pOVar9->is_big_endian_ = var_6;
                ((type_9 *)&pOVar9->_vptr_Output_fill)->_vptr_Output_fill =
                     (type_16 **)&PTR__Output_fill_debug_info_00657840;
              }
              pOVar12->free_space_fill_ = pOVar9;
              sVar10 = type_21::var_34
                                 ((type_21 *)pOVar9);
              (pOVar12->free_list_).min_hole_ = sVar10;
              pOVar12 = os;
            }
          }
        }
      }
    }
  }
LAB_0037f3c1:
  if (this->sections_are_attached_ != false) {
    if (parameters->target_ == (type_4 *)0x0) {
LAB_0037fb03:
                    /* WARNING: Subroutine does not return */
      var_27("../../gold/parameters.h",0x69,"target");
    }
    var_35(this,parameters->target_,pOVar12);
    pOVar12 = os;
  }
  return pOVar12;
}


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

undefined8 *
MASKED(long param_1,byte *param_2,int param_3,ulong param_4,ulong param_5,char param_6)

{
  long *plVar1;
  undefined *puVar2;
  uint uVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  size_t sVar7;
  undefined8 *puVar8;
  long lVar9;
  long lVar10;
  long lVar11;
  byte *pbVar12;
  byte *pbVar13;
  ulong uVar14;
  bool bVar15;
  bool bVar16;
  undefined1 uVar17;
  bool bVar18;
  undefined1 uVar19;
  byte bVar20;
  char local_59;
  undefined8 *local_40 [2];
  
  bVar20 = 0;
  uVar14 = param_5 & 0xffffffff;
  if ((param_4 & 2) != 0) goto LAB_0037f230;
  lVar10 = *(long *)(PTR_DAT_0067cb08 + 0x10);
  bVar15 = false;
  bVar18 = lVar10 == 0;
  if (bVar18) goto LAB_0037f97a;
  lVar9 = 5;
  pbVar12 = *(byte **)(lVar10 + 0xf80);
  pbVar13 = (byte *)0x57596e;
  do {
    if (lVar9 == 0) break;
    lVar9 = lVar9 + -1;
    bVar15 = *pbVar12 < *pbVar13;
    bVar18 = *pbVar12 == *pbVar13;
    pbVar12 = pbVar12 + 1;
    pbVar13 = pbVar13 + 1;
  } while (bVar18);
  bVar16 = false;
  bVar15 = (!bVar15 && !bVar18) == bVar15;
  if (bVar15) {
LAB_0037f1e5:
    bVar15 = false;
    bVar18 = *(char *)(lVar10 + 0x5689) == '\0';
    if (bVar18) {
LAB_0037f230:
      bVar15 = param_3 == 0;
      bVar18 = param_3 == 1;
      if (bVar18) {
        lVar10 = 0xb;
        pbVar12 = (byte *)".init_array";
        pbVar13 = param_2;
        do {
          if (lVar10 == 0) break;
          lVar10 = lVar10 + -1;
          bVar15 = *pbVar12 < *pbVar13;
          bVar18 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + 1;
          pbVar13 = pbVar13 + 1;
        } while (bVar18);
        bVar16 = false;
        bVar15 = (!bVar15 && !bVar18) == bVar15;
        if (bVar15) {
          param_3 = 0xe;
        }
        else {
          lVar10 = 0xe;
          pbVar12 = (byte *)".preinit_array";
          pbVar13 = param_2;
          do {
            if (lVar10 == 0) break;
            lVar10 = lVar10 + -1;
            bVar16 = *pbVar12 < *pbVar13;
            bVar15 = *pbVar12 == *pbVar13;
            pbVar12 = pbVar12 + 1;
            pbVar13 = pbVar13 + 1;
          } while (bVar15);
          bVar18 = false;
          bVar15 = (!bVar16 && !bVar15) == bVar16;
          if (bVar15) {
            param_3 = 0x10;
          }
          else {
            lVar10 = 0xb;
            pbVar12 = (byte *)".fini_array";
            pbVar13 = param_2;
            do {
              if (lVar10 == 0) break;
              lVar10 = lVar10 + -1;
              bVar18 = *pbVar12 < *pbVar13;
              bVar15 = *pbVar12 == *pbVar13;
              pbVar12 = pbVar12 + 1;
              pbVar13 = pbVar13 + 1;
            } while (bVar15);
            if ((!bVar18 && !bVar15) == bVar18) {
              param_3 = 0xf;
            }
          }
        }
      }
      plVar1 = *(long **)(PTR_DAT_0067cb08 + 0x18);
      if (plVar1 == (long *)0x0) goto LAB_0037fb03;
      local_40[0] = (undefined8 *)(**(code **)(*plVar1 + 0xd8))(plVar1,param_2,param_3,param_4);
    }
    else {
      lVar10 = 0xe;
      pbVar12 = (byte *)".debug_abbrev";
      pbVar13 = param_2;
      do {
        if (lVar10 == 0) break;
        lVar10 = lVar10 + -1;
        bVar15 = *pbVar12 < *pbVar13;
        bVar18 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + 1;
        pbVar13 = pbVar13 + 1;
      } while (bVar18);
      bVar16 = false;
      bVar15 = (!bVar15 && !bVar18) == bVar15;
      if (bVar15) {
        puVar8 = (undefined8 *)FUN_0049cb70(0x1a0);
                    /* try { // try from 0037f7d9 to 0037f7dd has its CatchHandler @ 0037fb7b */
        FUN_003c9d20(puVar8,param_2,param_3,param_4);
        *puVar8 = &PTR_FUN_006752b8;
        puVar8[0x2f] = puVar8 + 0x2d;
        puVar8[0x30] = puVar8 + 0x2d;
        lVar10 = *(long *)(param_1 + 0x340);
        puVar8[0x29] = 0;
        puVar8[0x2a] = 0;
        puVar8[0x2b] = 0;
        *(undefined4 *)(puVar8 + 0x2d) = 0;
        puVar8[0x2e] = 0;
        puVar8[0x31] = 0;
        *(undefined1 *)(puVar8 + 0x32) = 0;
        *(undefined4 *)((long)puVar8 + 0x194) = 0;
        *(undefined1 *)(puVar8 + 0x33) = 0;
        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;
        *(undefined8 **)(param_1 + 0x338) = puVar8;
        local_40[0] = puVar8;
        if (lVar10 != 0) {
          *(undefined8 **)(lVar10 + 0x160) = puVar8;
        }
      }
      else {
        lVar10 = 0xc;
        pbVar12 = (byte *)".debug_info";
        pbVar13 = param_2;
        do {
          if (lVar10 == 0) break;
          lVar10 = lVar10 + -1;
          bVar16 = *pbVar12 < *pbVar13;
          bVar15 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + 1;
          pbVar13 = pbVar13 + 1;
        } while (bVar15);
        if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f230;
        puVar8 = (undefined8 *)FUN_0049cb70(0x170);
                    /* try { // try from 0037f8a9 to 0037f8ad has its CatchHandler @ 0037fb73 */
        FUN_003c9d20(puVar8,param_2,param_3,param_4);
        *puVar8 = &PTR_FUN_00675370;
        lVar10 = *(long *)(param_1 + 0x338);
        puVar8[0x29] = 0;
        puVar8[0x2a] = 0;
        puVar8[0x2b] = 0;
        *(undefined1 *)(puVar8 + 0x2d) = 0;
        *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;
        *(undefined8 **)(param_1 + 0x340) = puVar8;
        local_40[0] = puVar8;
        if (lVar10 != 0) {
          puVar8[0x2c] = lVar10;
        }
      }
    }
  }
  else {
    lVar9 = 6;
    pbVar12 = &DAT_00533552;
    pbVar13 = param_2;
    do {
      if (lVar9 == 0) break;
      lVar9 = lVar9 + -1;
      bVar16 = *pbVar12 < *pbVar13;
      bVar15 = *pbVar12 == *pbVar13;
      pbVar12 = pbVar12 + 1;
      pbVar13 = pbVar13 + 1;
    } while (bVar15);
    if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f1e5;
    puVar8 = (undefined8 *)FUN_0049cb70(0x178);
                    /* try { // try from 0037f76b to 0037f76f has its CatchHandler @ 0037fb63 */
    FUN_003c9d20(puVar8,param_2,param_3,param_4);
    *puVar8 = &PTR_FUN_00675900;
    puVar8[0x29] = lVar10;
    puVar8[0x2b] = puVar8 + 0x2d;
    puVar8[0x2c] = 0;
    *(undefined1 *)(puVar8 + 0x2d) = 0;
    *(byte *)(puVar8 + 0x19) = *(byte *)(puVar8 + 0x19) | 0x30;
    local_40[0] = puVar8;
  }
  puVar8 = local_40[0];
  if (*(char *)(*(long *)(param_1 + 8) + 0x148) == '\0') {
    if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) goto LAB_0037f97a;
    local_59 = *(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x8c59);
    if ((local_59 == '\0') || (((uint)param_4 & 3) != 3)) goto LAB_0037f273;
    if (param_3 == 1) {
      bVar15 = false;
      bVar18 = (param_4 & 0x400) == 0;
      if (!bVar18) goto LAB_0037f278;
      lVar10 = 0xd;
      pbVar12 = param_2;
      pbVar13 = (byte *)".data.rel.ro";
      do {
        if (lVar10 == 0) break;
        lVar10 = lVar10 + -1;
        bVar15 = *pbVar12 < *pbVar13;
        bVar18 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
      } while (bVar18);
      bVar16 = false;
      bVar15 = (!bVar15 && !bVar18) == bVar15;
      if (bVar15) goto LAB_0037f278;
      lVar10 = 0x13;
      pbVar12 = param_2;
      pbVar13 = (byte *)".data.rel.ro.local";
      do {
        if (lVar10 == 0) break;
        lVar10 = lVar10 + -1;
        bVar16 = *pbVar12 < *pbVar13;
        bVar15 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
      } while (bVar15);
      bVar18 = false;
      bVar15 = (!bVar16 && !bVar15) == bVar16;
      if (!bVar15) {
        lVar10 = 7;
        pbVar12 = param_2;
        pbVar13 = (byte *)".ctors";
        do {
          if (lVar10 == 0) break;
          lVar10 = lVar10 + -1;
          bVar18 = *pbVar12 < *pbVar13;
          bVar15 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
        } while (bVar15);
        bVar16 = false;
        bVar15 = (!bVar18 && !bVar15) == bVar18;
        if (!bVar15) {
          lVar10 = 7;
          pbVar12 = param_2;
          pbVar13 = (byte *)".dtors";
          do {
            if (lVar10 == 0) break;
            lVar10 = lVar10 + -1;
            bVar16 = *pbVar12 < *pbVar13;
            bVar15 = *pbVar12 == *pbVar13;
            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
          } while (bVar15);
          if (((!bVar16 && !bVar15) != bVar16) &&
             (iVar4 = strcmp((char *)param_2,".jcr"), iVar4 != 0)) goto LAB_0037f273;
        }
        goto LAB_0037f278;
      }
    }
    else {
      if (2 < param_3 - 0xeU) goto LAB_0037f273;
LAB_0037f278:
      local_59 = '\0';
    }
    *(byte *)((long)puVar8 + 0xc9) = *(byte *)((long)puVar8 + 0xc9) | 0x20;
  }
  else {
LAB_0037f273:
    local_59 = param_6;
    if (param_6 != '\0') goto LAB_0037f278;
  }
  if (((int)param_5 == 0) && ((param_4 & 2) != 0)) {
    uVar3 = FUN_0037b280(param_1,puVar8,local_59);
    uVar14 = (ulong)uVar3;
    puVar8 = local_40[0];
  }
  puVar2 = PTR_DAT_0067cb08;
  uVar3 = (uint)uVar14;
  *(uint *)(puVar8 + 0xf) = uVar3;
  plVar1 = *(long **)(puVar2 + 0x18);
  if (plVar1 == (long *)0x0) goto LAB_0037fb03;
  if (*(code **)(*plVar1 + 0x18) == FUN_001a49c0) {
    puVar8 = *(undefined8 **)(param_1 + 0x250);
    if (puVar8 == *(undefined8 **)(param_1 + 600)) goto LAB_0037f938;
LAB_0037f2d9:
    *puVar8 = local_40[0];
    *(undefined8 **)(param_1 + 0x250) = puVar8 + 1;
  }
  else {
    (**(code **)(*plVar1 + 0x18))(plVar1,puVar8);
    puVar8 = *(undefined8 **)(param_1 + 0x250);
    if (puVar8 != *(undefined8 **)(param_1 + 600)) goto LAB_0037f2d9;
LAB_0037f938:
    FUN_00387bd0(param_1 + 0x248,puVar8,local_40);
  }
  puVar8 = local_40[0];
  lVar10 = *(long *)(param_1 + 8);
  lVar9 = *(long *)(PTR_DAT_0067cb08 + 0x10);
  if (*(char *)(lVar10 + 0x148) == '\0') {
    if (lVar9 == 0) {
LAB_0037f97a:
                    /* WARNING: Subroutine does not return */
      FUN_00352af0("../../gold/parameters.h",0x5c,"options");
    }
    bVar15 = false;
    bVar18 = *(char *)(lVar9 + 0x5051) == '\0';
    if (!bVar18) goto LAB_0037f347;
    lVar11 = 0xc;
    pbVar12 = param_2;
    pbVar13 = (byte *)".init_array";
    do {
      if (lVar11 == 0) break;
      lVar11 = lVar11 + -1;
      bVar15 = *pbVar12 < *pbVar13;
      bVar18 = *pbVar12 == *pbVar13;
      pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
      pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
    } while (bVar18);
    bVar16 = false;
    bVar15 = (!bVar15 && !bVar18) == bVar15;
    if (bVar15) {
LAB_0037f340:
      *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 4;
    }
    else {
      lVar11 = 0xc;
      pbVar12 = param_2;
      pbVar13 = (byte *)".fini_array";
      do {
        if (lVar11 == 0) break;
        lVar11 = lVar11 + -1;
        bVar16 = *pbVar12 < *pbVar13;
        bVar15 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
      } while (bVar15);
      if ((!bVar16 && !bVar15) == bVar16) goto LAB_0037f340;
      bVar15 = false;
      bVar18 = *(char *)(lVar9 + 0x1179) == '\0';
      if (bVar18) {
        lVar11 = 7;
        pbVar12 = param_2;
        pbVar13 = (byte *)".ctors";
        do {
          if (lVar11 == 0) break;
          lVar11 = lVar11 + -1;
          bVar15 = *pbVar12 < *pbVar13;
          bVar18 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
        } while (bVar18);
        bVar16 = false;
        bVar15 = (!bVar15 && !bVar18) == bVar15;
        if (!bVar15) {
          lVar11 = 7;
          pbVar12 = param_2;
          pbVar13 = (byte *)".dtors";
          do {
            if (lVar11 == 0) break;
            lVar11 = lVar11 + -1;
            bVar16 = *pbVar12 < *pbVar13;
            bVar15 = *pbVar12 == *pbVar13;
            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
          } while (bVar15);
          if ((!bVar16 && !bVar15) != bVar16) goto LAB_0037f347;
        }
        goto LAB_0037f340;
      }
    }
LAB_0037f347:
    bVar15 = *(char *)(lVar9 + 0x62b9) == '\0';
    if (((!bVar15) && (bVar15 = *(char *)(lVar10 + 0x148) == '\0', bVar15)) &&
       (bVar15 = *(char *)(param_1 + 0x371) == '\0', bVar15)) {
      bVar18 = false;
      bVar15 = *(char *)(lVar9 + 0x5051) == '\0';
      if (bVar15) {
        lVar10 = 6;
        pbVar12 = param_2;
        pbVar13 = (byte *)".text";
        do {
          if (lVar10 == 0) break;
          lVar10 = lVar10 + -1;
          bVar18 = *pbVar12 < *pbVar13;
          bVar15 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
        } while (bVar15);
        bVar15 = (!bVar18 && !bVar15) == bVar18;
        if (bVar15) {
          pbVar12 = (byte *)((long)local_40[0] + 0xc9);
          *pbVar12 = *pbVar12 | 4;
          bVar15 = *pbVar12 == 0;
        }
      }
    }
  }
  else {
    bVar15 = lVar9 == 0;
    if (bVar15) goto LAB_0037f97a;
  }
  bVar18 = false;
  lVar10 = 5;
  pbVar12 = *(byte **)(lVar9 + 0x5b00);
  pbVar13 = (byte *)0x575186;
  do {
    if (lVar10 == 0) break;
    lVar10 = lVar10 + -1;
    bVar18 = *pbVar12 < *pbVar13;
    bVar15 = *pbVar12 == *pbVar13;
    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
    pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
  } while (bVar15);
  if ((!bVar18 && !bVar15) == bVar18) {
    *(byte *)((long)local_40[0] + 0xc9) = *(byte *)((long)local_40[0] + 0xc9) | 8;
  }
  if (param_3 == 3) {
    bVar15 = false;
    bVar18 = *(char *)(param_1 + 0x370) == '\0';
    if (bVar18) {
      lVar10 = 5;
      pbVar12 = param_2;
      pbVar13 = (byte *)".stab";
      do {
        if (lVar10 == 0) break;
        lVar10 = lVar10 + -1;
        bVar15 = *pbVar12 < *pbVar13;
        bVar18 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
      } while (bVar18);
      uVar17 = 0;
      uVar19 = (!bVar15 && !bVar18) == bVar15;
      if ((bool)uVar19) {
        sVar7 = strlen((char *)param_2);
        lVar10 = 4;
        pbVar12 = param_2 + (sVar7 - 3);
        pbVar13 = (byte *)0x579a2e;
        do {
          if (lVar10 == 0) break;
          lVar10 = lVar10 + -1;
          uVar17 = *pbVar12 < *pbVar13;
          uVar19 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
        } while ((bool)uVar19);
        if ((!(bool)uVar17 && !(bool)uVar19) == (bool)uVar17) {
          *(undefined1 *)(param_1 + 0x370) = 1;
        }
      }
    }
  }
  else if ((param_3 == 1) || (param_3 == 8)) {
    bVar15 = uVar3 < 0x15;
    bVar18 = uVar3 == 0x15;
    if ((0x15 < uVar3) || (bVar15 = (0x3020c2UL >> (uVar14 & 0x3f) & 1) != 0, !bVar15)) {
      lVar10 = 10;
      pbVar12 = param_2;
      pbVar13 = (byte *)".eh_frame";
      do {
        if (lVar10 == 0) break;
        lVar10 = lVar10 + -1;
        bVar15 = *pbVar12 < *pbVar13;
        bVar18 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
        pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
      } while (bVar18);
      bVar16 = false;
      bVar15 = (!bVar15 && !bVar18) == bVar15;
      if (!bVar15) {
        lVar10 = 7;
        pbVar12 = param_2;
        pbVar13 = (byte *)".ctors";
        do {
          if (lVar10 == 0) break;
          lVar10 = lVar10 + -1;
          bVar16 = *pbVar12 < *pbVar13;
          bVar15 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
          pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
        } while (bVar15);
        bVar18 = false;
        bVar15 = (!bVar16 && !bVar15) == bVar16;
        if (!bVar15) {
          lVar10 = 7;
          pbVar12 = param_2;
          pbVar13 = (byte *)".dtors";
          do {
            if (lVar10 == 0) break;
            lVar10 = lVar10 + -1;
            bVar18 = *pbVar12 < *pbVar13;
            bVar15 = *pbVar12 == *pbVar13;
            pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
            pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
          } while (bVar15);
          bVar16 = false;
          bVar15 = (!bVar18 && !bVar15) == bVar18;
          if (!bVar15) {
            lVar10 = 5;
            pbVar12 = param_2;
            pbVar13 = &DAT_005710ea;
            do {
              if (lVar10 == 0) break;
              lVar10 = lVar10 + -1;
              bVar16 = *pbVar12 < *pbVar13;
              bVar15 = *pbVar12 == *pbVar13;
              pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
              pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
            } while (bVar15);
            if ((!bVar16 && !bVar15) != bVar16) {
              pbVar12 = (byte *)((long)local_40[0] + 0xca);
              bVar15 = false;
              *pbVar12 = *pbVar12 | 0x40;
              bVar18 = *pbVar12 == 0;
              lVar10 = 0xc;
              pbVar12 = param_2;
              pbVar13 = (byte *)".debug_info";
              do {
                if (lVar10 == 0) break;
                lVar10 = lVar10 + -1;
                bVar15 = *pbVar12 < *pbVar13;
                bVar18 = *pbVar12 == *pbVar13;
                pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
                pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
              } while (bVar18);
              bVar16 = false;
              bVar15 = (!bVar15 && !bVar18) == bVar15;
              if (bVar15) {
                puVar5 = (undefined8 *)FUN_0049cb70(0x10);
                *puVar5 = &DAT_00672c10;
                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0037fb2e to 0037fb32 has its CatchHandler @ 0037fb83 */
                  FUN_00352af0("../../gold/parameters.h",0x69,"target");
                }
                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);
                *(undefined1 *)((long)puVar5 + 9) = 0;
                *(undefined1 *)(puVar5 + 1) = uVar17;
                *puVar5 = &PTR_FUN_00657840;
              }
              else {
                lVar10 = 0xd;
                pbVar12 = param_2;
                pbVar13 = (byte *)".debug_types";
                do {
                  if (lVar10 == 0) break;
                  lVar10 = lVar10 + -1;
                  bVar16 = *pbVar12 < *pbVar13;
                  bVar15 = *pbVar12 == *pbVar13;
                  pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
                  pbVar13 = pbVar13 + (ulong)bVar20 * -2 + 1;
                } while (bVar15);
                bVar18 = false;
                bVar15 = (!bVar16 && !bVar15) == bVar16;
                if (!bVar15) {
                  lVar10 = 0xc;
                  pbVar12 = (byte *)".debug_line";
                  do {
                    if (lVar10 == 0) break;
                    lVar10 = lVar10 + -1;
                    bVar18 = *param_2 < *pbVar12;
                    bVar15 = *param_2 == *pbVar12;
                    param_2 = param_2 + (ulong)bVar20 * -2 + 1;
                    pbVar12 = pbVar12 + (ulong)bVar20 * -2 + 1;
                  } while (bVar15);
                  if ((!bVar18 && !bVar15) == bVar18) {
                    puVar5 = (undefined8 *)FUN_0049cb70(0x10);
                    *puVar5 = &DAT_00672c10;
                    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0037fb46 to 0037fb4a has its CatchHandler @ 0037fb8b */
                      FUN_00352af0("../../gold/parameters.h",0x69,"target");
                    }
                    *(undefined1 *)(puVar5 + 1) =
                         *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);
                    *puVar5 = &PTR_FUN_00657870;
                    puVar8[0x26] = puVar5;
                    uVar6 = FUN_003c8700(puVar5);
                    puVar8[0x25] = uVar6;
                    puVar8 = local_40[0];
                  }
                  goto LAB_0037f3c1;
                }
                puVar5 = (undefined8 *)FUN_0049cb70(0x10);
                *puVar5 = &DAT_00672c10;
                if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0037fb5e to 0037fb62 has its CatchHandler @ 0037fb6b */
                  FUN_00352af0("../../gold/parameters.h",0x69,"target");
                }
                uVar17 = *(undefined1 *)(*(long *)(*(long *)(PTR_DAT_0067cb08 + 0x18) + 8) + 4);
                *(undefined1 *)((long)puVar5 + 9) = 1;
                *(undefined1 *)(puVar5 + 1) = uVar17;
                *puVar5 = &PTR_FUN_00657840;
              }
              puVar8[0x26] = puVar5;
              uVar6 = FUN_003c86f0(puVar5);
              puVar8[0x25] = uVar6;
              puVar8 = local_40[0];
            }
          }
        }
      }
    }
  }
LAB_0037f3c1:
  if (*(char *)(param_1 + 0x369) != '\0') {
    if (*(long *)(PTR_DAT_0067cb08 + 0x18) == 0) {
LAB_0037fb03:
                    /* WARNING: Subroutine does not return */
      FUN_00352af0("../../gold/parameters.h",0x69,"target");
    }
    FUN_0037f0b0(param_1);
    puVar8 = local_40[0];
  }
  return puVar8;
}

